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
Форумы портала PHP.SU :: Версия для печати :: сессии
Форумы портала PHP.SU » PHP » Программирование на PHP » сессии

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

1. SAD - 07 Июня, 2009 - 01:41:45 - перейти к сообщению
баловался с сессиями и кое что смущает.

я захожу на страницу входа,прописывая адрес--создается сессия пустая(название sess_697157ee207288813d57a8fd065a81cd), потом перехожу на страницу "восстановить пароль", ввожу данные , нажимаю отправить--записываю в сессию данные(чтобы их можно было использовать),перенаправление на страницу входа , на почту приходит ссылка куда перейти и поменять пароль, жму на ссылку и у меня создается другая пустая сессия( название sess_9dd044913d060f3a595b43a43a9ca35d) . мне для того чтобы показать страницу с "изменением пароля" нужны данные с первой сессии, а данные считываются со второй сессии (она пустая) и страница не отображается.

я пробовал такую вещь, заходил на страницу входа,прописывая адрес, убивал сессию(название сессии снова sess_697157ee207288813d57a8fd065a81cd),переходил на страницу "восстановить пароль"--создалась сессия(sess_9dd044913d060f3a595b43a43a9ca35d, название опять повторяется) ,потом проделывал действия выше, и вторая сессия не создавалась, а данные считывались с данной сессии

или заходил на страницу входа,прописывая адрес , убивал сессию (sess_697157ee207288813d57a8fd065a81cd) ,обновлял страницу входа , создалась сессия (опять sess_9dd044913d060f3a595b43a43a9ca35d), делаю те же действия, сессия вторая не создвалась,
и все опять норм работает

в чем причина этого?
2. vitaliy_mad - 07 Июня, 2009 - 02:08:55 - перейти к сообщению
много букв... код в студию....
3. SAD - 07 Июня, 2009 - 02:28:25 - перейти к сообщению
vitaliy_mad пишет:
много букв... код в студию....


мне для этого придется выложить 3 файла больших , те страницы разные, разные файлы

в странице "входа" сессия создается, в странице "восстановить пароль" сессия создается и в странице "изменить пароль" сессия создается, все что такого главного по сессиям
4. vitaliy_mad - 07 Июня, 2009 - 02:36:45 - перейти к сообщению
каком образом происходит запись и чтение сессии?

они вообще запысываються? как проверял?
5. SAD - 07 Июня, 2009 - 02:41:06 - перейти к сообщению
vitaliy_mad пишет:
каком образом происходит запись и чтение сессии?

они вообще запысываються? как проверял?


у мну денвер стоит, в папке tmp они создаются , я открываю файлы и смотрю содержимое, отслеживаю когда создаются и запись в них происходит

записал переменные в сессионную переменную, перешел на другую страницу--в сессию происходит запись . пустая сессия я написал когда создается

чтение происходит при обращении к переменным сессии, чтобы можно было прочитать , стартую сессию в начале каждого файла *.php
6. vitaliy_mad - 07 Июня, 2009 - 03:40:58 - перейти к сообщению
в общем... иливыкладыва куски кода отвечающие за сессии или тебе никто не поможет... телепатов здесь нет...
7. SAD - 07 Июня, 2009 - 03:55:11 - перейти к сообщению
страница входа

CODE (text):
скопировать код в буфер обмена
  1. <?php
  2.  
  3. session_start();
  4.  
  5. include("config.php");
  6. if(isset($_GET['exit']))
  7. {
  8.   $_SESSION = Array();
  9.   session_destroy();
  10. }
  11.  
  12. if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
  13.                                                                             //Если кнопка не нажата, отображаем форму
  14.                                                                             if(!$_POST['do']){
  15. ?>

дальше ничего интересного

страница "забыли пароль"

CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. session_start();
  3. @include("config.php");
  4. @include("functions.php");

и присваивание переменных
CODE (text):
скопировать код в буфер обмена
  1. $id=md5(date("U")+rand(1,100));
  2.           $_SESSION['id']=$id;
  3.           $_SESSION['pz']=$nick;

страница где вводится новый пароль

CODE (text):
скопировать код в буфер обмена
  1. <?php
  2. session_start();
  3. @include("config.php");
  4. if($_SESSION['id']==$_GET['id'] AND !empty($_SESSION['id'])) {

....
и
CODE (text):
скопировать код в буфер обмена
  1. else {?><meta http-equiv='refresh' content='3; url=index.php'><center><H4>Нет доступа.</H4></center><?}
8. Гость - 07 Июня, 2009 - 10:56:56 - перейти к сообщению
А разве session_destroy() сразу уничтожает сессию? Может добавить exit() в это условие
9. SAD - 07 Июня, 2009 - 11:53:27 - перейти к сообщению
JustUserR пишет:
А разве session_destroy() сразу уничтожает сессию? Может добавить exit() в это условие


мне так валенок написал, да это тут не причем, кстати уничтожает сразу
10. SAD - 07 Июня, 2009 - 18:31:55 - перейти к сообщению
мну кто нибудь поможет?
11. Гость - 07 Июня, 2009 - 23:32:37 - перейти к сообщению
Эээ была уже похожая тема когда на самом деле сессия гнорировалась и создавалась новая (Дело в том что cookie не сохраняются солжным образом)
Просто есть условная и фактическая (Реальная) установка cookie Условная происходит когда задается команда setcookie (Ну или соответственно сессия инициализируется через cookie) а фактическая происходит уже когда бразуер захочет (В пределах разумного конечно)
Особенно проблема возникает при использовнаии IFrame потому что cookie фактически не устанавливаются пока не перегрузится главная страница (Содежращая сий фрейм)

 

Powered by ExBB FM 1.0 RC1