Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Пользователи заходят не в свои аккаунты
 
 автор: tvv123456   (03.10.2011 в 22:56)   письмо автору
 
 

Добрый вечер!
Сразу оговорюсь что проблема возникает при интеграции своего кода с wordpress

суть проблемы: для не авторизованных пользователей выдается форма авторизации для авторизованных показывается их аккаунт. Проблема в том что некоторые пользователи заходят каким-то образом не в свои аккаунты
Вот куски кода отвечающие за авторизацию:

<?
function OwnStripSlashes($dataубираем экранирующие слеши если включены магические кавычки     

   
     if(
is_array($data)) 
         
$data array_map('OwnStripSlashes'$data); 
     else 
         
$data trim(!get_magic_quotes_gpc()?$data:stripslashes($data)); 
     return 
$data
}

function 
GetRealIpAgent() // определение ip пользователя
{
  
$strRemoteIP $_SERVER['REMOTE_ADDR'];  
 if (!
$strRemoteIP) { $strRemoteIP urldecode(getenv('HTTP_CLIENTIP'));}   
 if (
getenv('HTTP_X_FORWARDED_FOR')) { $strIP getenv('HTTP_X_FORWARDED_FOR'); }  
 elseif (
getenv('HTTP_X_FORWARDED')) { $strIP getenv('HTTP_X_FORWARDED'); }  
 elseif (
getenv('HTTP_FORWARDED_FOR')) { $strIP getenv('HTTP_FORWARDED_FOR'); }  
 elseif (
getenv('HTTP_FORWARDED')) { $strIP getenv('HTTP_FORWARDED'); }  
 else { 
$strIP $_SERVER['REMOTE_ADDR']; }   
 if (
$strRemoteIP != $strIP) { $strIP $strRemoteIP.", ".$strIP; }  
 return 
$strIP.getenv("HTTP_USER_AGENT");
}

if(isset(
$_POST['go']))//если пользователь хочет авторизироваться
{
      
$_POST OwnStripSlashes($_POST);//убираем экранирующие слеши
      
$name mysql_real_escape_string($_POST['login']);//подготовка к запросу в мускул
      
$pass $_POST['pass'];
      
$result mysql_query("SELECT id,login,password FROM users where login='$name'",$db) or die(mysql_error());
      if(
mysql_num_rows($result)!=&& mysql_num_rows($result)!=0) {echo "ERROR!!!!"; isset($_SESSION['login'])?session_destroy():"";}
      else 
        {
          
$row mysql_fetch_assoc($result);
          if(
$pass !=$row['password']) {session_destroy(); header("Location:?".rand(0,100)); exit;}
          if(
mysql_num_rows($result)!=0){$_SESSION['login'] = $_POST['login'];$_SESSION['user_id_tr1']=(int)$row['id'];$_SESSION['auth_tr']=1;
          
$_SESSION['ip'] = md5(GetRealIpAgent());} else session_destroy();
          
header("Location:?".rand(0,100));exit;
        }
  
}


if(!isset(
$_SESSION['login']) || empty($_SESSION['login']) || !isset($_SESSION['auth_tr']) || !isset($_SESSION['ip']) || md5(GetRealIpAgent()) != $_SESSION['ip'] || (int)$_SESSION['user_id_tr1'] == 0)//првоер€ем авторизирован пользователь или нет. eсли нет выдаем форму дл€ авторизации
{
?>
<center><form action="#" method="post">
Login:<br />

<input name="login" type="text" />

<br />Password:
<input name="pass" type="password" />
<br> <input name="go" type="submit" value="submit" /> 
</form><br />
<br /></center>
<center>Not registered? <a href="/signup/">Please Sign up.</a>
</center>

<?php
}
else
{
$res_user mysql_query("SELECT login,First_name,Last_name,Street_address,City,State,Zip,Country,Primary_telephone,Email,PM,LR,Skype FROM users WHERE id=".(int)$_SESSION['user_id_tr1']);

//ну и дальше выводим результат


  Ответить  
 
 автор: cheops   (04.10.2011 в 09:57)   письмо автору
 
   для: tvv123456   (03.10.2011 в 22:56)
 

Помимо session_destroy() добавьте еще на всякий случай unset($_SESSION).

  Ответить  
 
 автор: tvv123456   (06.10.2011 в 18:12)   письмо автору
 
   для: cheops   (04.10.2011 в 09:57)
 

Вообщем как я понял, вордпресс просто подменял $_SESSION['login'] при авторизации
Переименовал переменную, подобных проблем вроде не возникает больше

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования