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]   

> Без описания
Татьяна_С
Отправлено: 05 Декабря, 2007 - 14:02:48
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Нояб. 2007  
Откуда: Барнаул


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




Здравствуйте! Есть работающий давно портал, надо бы там сделать авторизацию.. Делаю ее.. Он тебя приветствует, все как полагается, стартует сессию, и в нее заносит кучу всяких данных... Они все заносятся - echo $_SESSION; работает... Потом мы переходим по ссылке на след страницу, а он не переносит данные (хотя session_stars() здесь есть)... Т.е. содержимое $_SESSION практически становится равно нулю....Огорчение
PHP:
скопировать код в буфер обмена
  1. require_once $_SERVER['DOCUMENT_ROOT'].'/login.php';
  2.  
  3. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  4. header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
  5. header("Cache-Control: no-store, no-cache, must-revalidate");
  6. header("Cache-Control: post-check=0, pre-check=0", false);
  7. header("Pragma: no-cache");
  8.  
  9. if(isset($_POST['login']))
  10.    $action = 'login';
  11. $_SESSION['action'] = $action;
  12.  
  13.  
  14. if ($action == 'login') {
  15.  
  16.     if (@$_POST['referer'] and $_USER['logged_in'])
  17.         header('Location: '.$_POST['referer']);
  18. }
  19. ?>
  20.  

и вот текст файла login.php, который он вызывает в самом начале
PHP:
скопировать код в буфер обмена
  1. <?if ($_SERVER['PHP_SELF'] == '/login.php')   die();
  2. @define('SYS_INCLUDE', 1);
  3. require_once $_SERVER['DOCUMENT_ROOT'].'/MySQL/MySQL.php';
  4.  
  5. /* -------------------------- Login procedure ------------------------------- */
  6.  
  7. $_USER = array( 'logged_in' => false);
  8.  
  9. $login    = NULL;
  10. $password = NULL;
  11.  
  12. if (($_SERVER['REQUEST_METHOD'] == 'POST') and isset($_POST['login-attempt'])) {
  13.  
  14.     $login    = isset($_POST['login'])    ? trim($_POST['login'])         : NULL;
  15.     $password = isset($_POST['password']) ? md5(trim($_POST['password'])) : NULL;
  16.  
  17. } else {
  18.  
  19.     $login    = $_SESSION['login'];
  20.     $password = $_SESSION['password'];
  21.  
  22. }
  23.  
  24. if (!is_null($login) and !is_null($password)) {
  25.  
  26.  .......всякие присваявания переменным......
  27.  
  28.     }
  29.  
  30.  
  31. /* ------------------------- Session handlers ------------------------------- */
  32.  
  33.  
  34. $_SESSION['user'] =& $_USER;
  35. $_SESSION['login'] =$login;
  36. $_SESSION['password'] =$password;
  37. ?>
  38.  

Может здесь че-то кардинально не так? Просто первоначальный вариант писала не я, я только правлю (уже вторые сутки бьюсь).... Заранее благодарна..Закатив глазки

А, еще добавлю - эти файлики запускаются вначале каждой страницы....
 
 Top
evgenijj
Отправлено: 05 Декабря, 2007 - 16:34:46
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $login    = $_SESSION['login'];
  3. $password = $_SESSION['password'];
  4. ...........................................
  5.  

Может быть, прежде чем обращаться к переменным сеcсии, надо ее сначала стартануть?
PHP:
скопировать код в буфер обмена
  1.  
  2. .........................................
  3. $login    = $_SESSION['login'];
  4. $password = $_SESSION['password'];
  5.  
 
 Top
Татьяна_С
Отправлено: 05 Декабря, 2007 - 17:05:08
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Нояб. 2007  
Откуда: Барнаул


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




поставила - ноль эмоций...
Вот кругом читаю, что у сессии обязательно должен быть уникальный ид, но он-же, как я понимаю, при первом вызове сам генерируется и потом передается... Или мож я не совсем права?
 
 Top
evgenijj
Отправлено: 05 Декабря, 2007 - 20:01:57
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


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




Ты меня извини, но то что ты написала -- это бред тяжело больного человека. Хуже того -- это произвольно выдранные из разных мест куски кода, по которым ничего нельзя понять. Во-первых, как я уже говорил, ты обращаешься к переменным сессии, даже ее не стартанув. Во-вторых, что означают твои слова "эти файлики запускаются вначале каждой страницы"? На каждой странице сайта ожидаются данные формы?
PHP:
скопировать код в буфер обмена
  1.  
  2.  if(isset($_POST['login']))
  3.     $action = 'login';
  4.  $_SESSION['action'] = $action;
  5.  

Если же нет, то переменная $_SESSION['action'] не определена. Дальше - хуже. Ты сравниваешь неопределенную преременную $action со строкой
PHP:
скопировать код в буфер обмена
  1.  
  2.  if ($action == 'login') {
  3.  
  4.      if (@$_POST['referer'] and $_USER['logged_in'])
  5.          header('Location: '.$_POST['referer']);
  6.  }
  7.  

И так далее:
PHP:
скопировать код в буфер обмена
  1.  
  2.  if (!is_null($login) and !is_null($password)) {
  3.   .......всякие присваявания переменным......
  4.  }
  5.  
  6.  
  7.  $_SESSION['user'] =& $_USER;
  8.  $_SESSION['login'] =$login;
  9.  $_SESSION['password'] =$password;
  10.  

Сначала идет проверка, что переменные $login и $password определены. И это правильно. Так почему дальше нет этой проверки? И (вполне возможно) неопределенные преременные записываются в сессию?

Так что вопрос не в том, что (КАРАУЛ!) сессия не работает, а в том, что нарушена логика скрипта. Неплохо бы еще научиться отлаживать свои творения.

http://phpfaq[dot]ru/debug
http://phpfaq[dot]ru/sessions

Теперь главное . Выполни небольшой скрипт
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;
  4. echo "Вы обновили эту страницу ".$_SESSION['counter']++." раз. ";
  5. echo "
  6. <a href=".$_SERVER['PHP_SELF'].">обновить";
  7. ?>
  8.  

Если значение счетчика увеличивается, значит с сессиями все в порядке. Тогда описывай задачу, которую надо решить -- будем думать.
 
 Top
Татьяна_С
Отправлено: 06 Декабря, 2007 - 11:56:28
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Нояб. 2007  
Откуда: Барнаул


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




Да, плохи видать мои дела... Этот скриптик не работает, ниче не обновляется... Так почему может не работать моя сессия? Настройки в php.ini? Но ведь этот файл, насколько я понимаю, на сервере единственный для всех... И посмотреть его может только работники, фирмы - хостера... Так что же мне делать тогда?
 
 Top
Devoll
Отправлено: 06 Декабря, 2007 - 14:26:24
Post Id



Новичок


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


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




1. Написать в техподдержку хостера
2. Проверить, не кешируется ли значение (если с Оперы проверяете)
 
 Top
Татьяна_С
Отправлено: 06 Декабря, 2007 - 16:20:32
Post Id



Новичок


Покинул форум
Сообщений всего: 24
Дата рег-ции: Нояб. 2007  
Откуда: Барнаул


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




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


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB