Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как я уже сказал: сессии не канают!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
D1mOn
Отправлено: 04 Марта, 2008 - 12:24:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Привожу код регистрации сессий

PHP:
скопировать код в буфер обмена
  1. if(!isset($_POST['submit']))
  2.  {
  3.    print "<center><h2>Админка</h2><form action=\"$PHP_SELF\" method=\"post\">
  4.   <table border=\"0\">
  5.   <td width=\"50px\">Логин</td><td><input type=\"text\" name=\"login\" maxlength=\"32\"></td><tr>
  6.   <td width=\"50px\">Пароль</td><td><input type=\"password\" name=\"pass\" maxlength=\"32\"></td><tr>
  7.   <td colspan=\"2\"><center><input type=\"submit\" name=\"submit\" value\"Вход\"></center></td></table></form></center>
  8.   ";
  9.    exit;
  10.  } else {
  11.  
  12.    if(!isset($_POST['login']) OR !isset($_POST['pass']))
  13.    {
  14.      header ("Location: $PHP_SELF");
  15.      exit;
  16.    }
  17.  
  18.    $nick = substr($_POST['login'],0,32);
  19.    $password = substr($_POST['pass'],0,32);
  20.    $nick = trim($nick);
  21.    $password = trim($password);
  22.    $nick = addslashes($nick);
  23.    $password = addslashes($password);
  24.    $nick = htmlspecialchars($nick);
  25.    $password = htmlspecialchars($password);
  26.    $nick = quotemeta($nick);
  27.    $password = quotemeta($password);
  28.  
  29.    $password_md5 = md5($password);
  30.  
  31.    if(empty($nick) OR empty($password))
  32.    {
  33.      header ("Location: $PHP_SELF");
  34.      exit;
  35.    }
  36.  
  37.    $now = date('Y-m-d H:i:s',mktime(gmdate('H')+3,gmdate('i'),gmdate('s'),gmdate('m'),gmdate('d'),gmdate('Y')));
  38.  
  39.    $result = mysql_query("SELECT * FROM users WHERE name = '$nick' AND password = '$password_md5'", $db);
  40.    $res = mysql_fetch_array($result);
  41.    if(mysql_num_rows($result) != 1)
  42.    {
  43.      print "Неправильный логин или пароль!";
  44.      exit;
  45.     } else {
  46.  
  47.      if($res['status'] == 'admin' OR $res['status'] == 'moder')
  48.      {
  49.        // регистрируем сессию
  50.        session_start();
  51.        session_regenerate_id();
  52.        $ses_id = session_id();
  53.  
  54.        $_SESSION['name'] = 'adminka';
  55.        $uid = $res['id'];
  56.        $status = $res['status'];
  57.  
  58.        mysql_query("INSERT INTO sessions (uid,username,sid,status,date) values ('$uid','$nick','$ses_id','$status','$now')");
  59.        header ("Location: admin.php?sid=$ses_id");
  60.        exit;
  61.      }
  62.    }


НЕ кАНАЕТ!!! ща повешусь!
(Добавление)
А вот это код админки, которая принимает:

PHP:
скопировать код в буфер обмена
  1.    $ses_id = session_id();
  2.  
  3.    if($_SESSION['name'] != 'adminka')
  4.    {
  5.      print "У вас нет прав доступа!";
  6.      exit;
  7.    }
  8.  
  9.    if($sid != $ses_id)
  10.    {
  11.      session_destroy();
  12.      header ("Location: index.php");
  13.      exit;
  14.    }
  15.  
  16.  
  17.    $result = mysql_query("SELECT * FROM sessions WHERE sid = '$sid'", $db);
  18.    $res = mysql_fetch_array($result);
  19.    $user = $res['username'];
  20.    $status = $res['status'];
  21.    $enter = $res['date'];
  22.    if(mysql_num_rows($result) != 1)
  23.    {
  24.      header ("Location: index.php");
  25.      exit;
  26.    }


И что?!?!? Сессии разных пользователей смешиваются т.е. захожу я под Димой, кто-то заходит под Васей, и уменя вместо Димы (админа), появляется Вася (модератор!!!)
 
 Top
EuGen Администратор
Отправлено: 04 Марта, 2008 - 12:32:59
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)






-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
D1mOn
Отправлено: 04 Марта, 2008 - 12:38:54
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Ну у меня все тоже самое, только register_globals = off!

И все равно почему-то "смешиваются"
 
 Top
RomAndry Администратор
Отправлено: 04 Марта, 2008 - 12:40:00
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




для начала:
1. не стоит приводить ВЕСЬ код. Приводи пример сокращенный именно там, где проблема.
2. всегда используй DEBUG своего кода. echo на удивление даст понимание происходящего процесса.
в твоем случае у народа нет желания вникать в весь код.
 
My status
 Top
EuGen Администратор
Отправлено: 04 Марта, 2008 - 12:41:16
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Мое сообщение:
04 Марта, 2008 - 13:32:59

Ваше сообщение:
04 Марта, 2008 - 13:38:54

Три статьи за 6 минут, по 2 минуты на статью. Подскажите адресок школы скорочтения, где Вас этому научили, а то получается, что я слишком много времени на чтение трачу, надо бы сократить.
А если серьезно - то внимательнее читайте, там дана довольно полная информация.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
D1mOn
Отправлено: 04 Марта, 2008 - 12:56:21
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Понятно, что ниче не понятно )

Не нашел ничего про разграничение сессий (((
 
 Top
RomAndry Администратор
Отправлено: 04 Марта, 2008 - 12:58:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




Цитата:
Не нашел ничего про разграничение сессий (((

а этого и не найдете, потому как это КОНЦЕПЦИЯ сессий!
и вообще в СЕССИИ принято хранить только логин и хеш пароля.
далее в базе определяете кто какие права имеет и выбираете из базы по логину и хеш-паролю права этого юзера.
 
My status
 Top
D1mOn
Отправлено: 04 Марта, 2008 - 13:05:20
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


А хэш пароля зачем? Логина не хватит?
 
 Top
RomAndry Администратор
Отправлено: 04 Марта, 2008 - 13:17:35
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




не хватит!
не стоит искушать судьбу
когда в чужие руки попадет папка temp, где хранятся сессии, то я могу увидеть логины админов.
 
My status
 Top
D1mOn
Отправлено: 04 Марта, 2008 - 13:26:15
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


{fear}!

А что может попасть??!??!
 
 Top
Dastar
Отправлено: 04 Марта, 2008 - 16:44:50
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




Ром, имхо, но хватает только id пользователя. А хеш вообще лучше не хранить в сессии, опять моя имха.


-----
Не знаешь - молчи.
 
 Top
RomAndry Администратор
Отправлено: 04 Марта, 2008 - 19:24:26
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




в принципе да, достаточно только ID юзера
 
My status
 Top
valenok
Отправлено: 04 Марта, 2008 - 19:27:06
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




? Мой id на форуме 19.
Взломайте меня..


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB