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 - 08:55:36
Post Id



Частый гость


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


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

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


Открываю сессию, сижу, кто-нибудь заходит и (!) почему-то начинает сидеть под моей сессией с моим именем и т.д

В чем прикол?

Это установка сессии
PHP:
скопировать код в буфер обмена
  1. $_SESSION['name'] = 'adminka';
  2.        $SESSION['login'] = '';
  3.        $status = $res['status'];
  4.  
  5.        session_regenerate_id();
  6.        $sid = session_id();
  7.        mysql_query("INSERT INTO sessions (username,sid,status,date) values ('$nick','$sid','$status','$now')");
  8.        header ("Location: admin.php");
  9.        exit;


Это проверка на другой странице
PHP:
скопировать код в буфер обмена
  1.  
  2.  $sid = session_id();
  3.  
  4.  if(!isset($_SESSION['s_name']) OR $_SESSION['s_name'] != 'adminka')
  5.  {
  6.    header ("Location: index.php");
  7.    exit;
  8.  }
  9.  
  10.  if($_SESSION['s_name'] == 'adminka')
  11.  {
  12.    $db = mysql_connect('localhost','root','');
  13.    $res = mysql_select_db('db',$db);
  14.  
  15.    mysql_query ("set character_set_client='cp1251'");
  16.    mysql_query ("set character_set_results='cp1251'");
  17.    mysql_query ("set collation_connection='cp1251_general_ci'");
  18.  
  19.    $result = mysql_query("SELECT * FROM sessions WHERE sid = '$sid'", $db);
  20.    $res = mysql_fetch_array($result);
  21.  
  22.    if(mysql_num_rows($result) != 1)
  23.    {
  24.      header ("Location: index.php");
  25.      exit;
  26.    }
  27.    else
  28.    {
  29.      $ses_user = $res['username'];
  30.      $ses_status = $res['status'];
  31.      $enter_time = $res['date'];
  32.      $_SESSION['status'] = $res['status'];
  33.    }
  34.  }
  35.  else
  36.  {
  37.    header ("Location: index.php");
  38.    exit;
  39.  }


Млин. Помогите.

(Отредактировано автором: 04 Марта, 2008 - 08:56:36)

 
 Top
valenok
Отправлено: 04 Марта, 2008 - 09:57:23
Post Id



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


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


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




PHP:
скопировать код в буфер обмена
  1. $_SESSION['name'] = 'adminka';
  2.        $SESSION['login'] = '';
  3.        $status = $res['status'];
  4.  
  5.        session_regenerate_id();
  6.        $sid = session_id();
  7.        mysql_query("INSERT INTO sessions (username,sid,status,date) values ('$nick','$sid','$status','$now')");
  8.        header ("Location: admin.php");
  9.        exit;
  10.  


Каждую строчку - объяснить что делает и зачем она нужна.


-----
Truly yours, Sasha.
 
My status
 Top
D1mOn
Отправлено: 04 Марта, 2008 - 10:10:46
Post Id



Частый гость


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


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

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


Ничего
(Добавление)
Млин, почему-то сессии смешиваются!

Пытаюсь так:
PHP:
скопировать код в буфер обмена
  1.        session_regenerate_id();
  2.        $sid = session_id();
  3.  
  4.        $_SESSION['name'] = 'adminka'; // имя сессии
  5.        $_SESSION['login'] = $nick; // пользователь
  6.        $_SESSION['status'] = $res['status']; // его статус (админ, модер и т.д.)
  7.        $_SESSION['uid'] = $res['id']; // его id, я думая для идентефикации между пользователями
  8.        $uid = $res['id'];
  9.        $status = $res['status'];
  10.  
  11.        mysql_query("INSERT INTO sessions (uid,username,sid,status,date) values ('$uid','$nick','$sid','$status','$now')");
  12.        header ("Location: admin.php");
  13.        exit;


А это скрипт принимающий данные:
PHP:
скопировать код в буфер обмена
  1.   $sid = session_id();
  2.  
  3.   if($_SESSION['name'] != 'adminka')
  4.   {
  5.     print "У вас нет прав доступа!";
  6.     exit;
  7.   }
  8.  
  9.    $user = $_SESSION['login'];
  10.    $status = $_SESSION['status'];
  11.    $uid = $_SESSION['uid'];
  12.  
  13.    $db = mysql_connect('localhost','root','');
  14.    $res = mysql_select_db('db',$db);
  15.  
  16.    mysql_query ("set character_set_client='cp1251'");
  17.    mysql_query ("set character_set_results='cp1251'");
  18.    mysql_query ("set collation_connection='cp1251_general_ci'");
  19.  
  20.    $result = mysql_query("SELECT * FROM sessions WHERE uid = '$uid'", $db);
  21.    $res = mysql_fetch_array($result);
  22.    $enter_time = $res['date'];
  23.    if(mysql_num_rows($result) != 1)
  24.    {
  25.      //header ("Location: index.php");
  26.      print "$uid : Нет такой сессии";
  27.      exit;
  28.    }


Херня какая-тА (прошу прощения за выражения)!

(Отредактировано автором: 04 Марта, 2008 - 10:19:59)

 
 Top
valenok
Отправлено: 04 Марта, 2008 - 13:52:31
Post Id



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


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


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






-----
Truly yours, Sasha.
 
My status
 Top
D1mOn
Отправлено: 04 Марта, 2008 - 14:41:24
Post Id



Частый гость


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


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

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


Да епрст!!!! Все равно захожу под админом, кто-то заходит под модератором, после меня и уменя меняется ВСЁ на него, ник, сессия и т.д.
(Добавление)
Упростил как мне подсказали.

Создаю переменные сессии логин и хэш пароля, на странице админа проверяю их в таблице, вывожу статус пользователя (админ или модератор) из записи этого пользователя., и даю данные либо для админа, либо для модера. Вроде все должно работать! А фигу!!! Даже PHPSESSID проверял разные!
 
 Top
Dastar
Отправлено: 04 Марта, 2008 - 16:40:40
Post Id



Частый гость


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


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




Начните с сокращения кода. При авторизации выкинте все ненужное, и просто напишите session_start();
Потом занесите в таблицу все session_id(), после чего их распечатайте.


-----
Не знаешь - молчи.
 
 Top
EuGen Администратор
Отправлено: 04 Марта, 2008 - 17:29:01
Post Id


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


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


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




Dastar пишет:
Потом занесите в таблицу все session_id(), после чего их распечатайте.

Это где такому учат ?....


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Корзина »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB