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. nikitasnv - 13 Декабря, 2008 - 01:13:25 - перейти к сообщению
Здравствуйте. Проблема в следующем, даже после выполнения нижепреведенного кода сессия не завершается и куки остаются. Подскажите пожалуйста как это лечить.
2. RomAndry - 13 Декабря, 2008 - 10:31:33 - перейти к сообщению
Возможно заблокирован вывод ошибок и что-то выводится ДО старта сессии.
3. valenok - 13 Декабря, 2008 - 10:56:49 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. Error_Reporting(E_ALL & ~E_NOTICE);
  3.  
  4. echo 'Session not yet initialized: a='.$_SESSION['a'],'<br>';
  5. $_SESSION['a'] = 'a';
  6. echo 'Session initialized: a='.$_SESSION['a'],'<br>';
  7. $_SESSION = array();
  8. echo 'Session destroyed: a='.$_SESSION['a'],'<br>';


Нажми два раза ф5 потом скажи что вывело на третий раз
4. nikitasnv - 13 Декабря, 2008 - 13:23:01 - перейти к сообщению
Цитата:
Нажми два раза ф5 потом скажи что вывело на третий раз


Выводит вот это:

Session not yet initialized: a=

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at S:\home\snv.ua\www\test.php:3) in S:\home\snv.ua\www\test.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at S:\home\snv.ua\www\test.php:3) in S:\home\snv.ua\www\test.php on line 4
Session initialized: a=a
Session destroyed: a=
(Добавление)
RomAndry пишет:
Возможно заблокирован вывод ошибок и что-то выводится ДО старта сессии.


До старта сессии ничего не выводится. Это вообще единственное что есть на странице.
(Добавление)
Вот полный код страницы:
5. Ыыы - 13 Декабря, 2008 - 13:33:22 - перейти к сообщению
Возможно перед <?php стоит пробел, или системный символ. Такое бывает при редактировании файла в некоторых редакторах.
6. nikitasnv - 13 Декабря, 2008 - 14:18:51 - перейти к сообщению
Ыыы пишет:
Возможно перед <?php стоит пробел, или системный символ. Такое бывает при редактировании файла в некоторых редакторах.


Никаких пробелов нет.
Переменные уничтожаются, но куки остаются. Соответственно сессия тоже Огорчение
7. Shock - 13 Декабря, 2008 - 15:34:55 - перейти к сообщению
А этот код у тебя перед <html> стоит или после. Если после, значит поставь перед. тоесть:
<?php
session_start();
//....
session_destroy();
?>
<html>
<head>
и так далее.
8. nikitasnv - 13 Декабря, 2008 - 15:52:56 - перейти к сообщению
Shock пишет:
А этот код у тебя перед <html> стоит или после. Если после, значит поставь перед.

Перед. Кроме этого кода в файле вообще ничего нет, кроме страницы которая подключается через include в самом его конце.
9. Гость - 13 Декабря, 2008 - 17:04:44 - перейти к сообщению
Точно ли ИМЕННО с помощью include() ?
Если используется require(), то, насколько мне изветсно, она всегда подключается в самое начало, причем безусловно.
Проверьте это дело
10. nikitasnv - 13 Декабря, 2008 - 17:16:02 - перейти к сообщению
JustUserR пишет:
Точно ли ИМЕННО с помощью include() ?
Если используется require(), то, насколько мне изветсно, она всегда подключается в самое начало, причем безусловно.
Проверьте это дело


include()!!!! Точнее некуда, особенно если учесть что текст скрипта описан здесь полностью.
Ещё раз выкладаваю текст ФАЙЛА exit.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (isset($_REQUEST[session_name()]))
  3. {
  4. $_SESSION = array();
  5. unset($_REQUEST[session_name()]);
  6. }
  7. include ("index.php");
  8. ?>


Это всё что есть в файле. Больше нет ничего! Да, это ВСЁ содержимое файла!
11. valenok - 13 Декабря, 2008 - 17:55:43 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (isset($_REQUEST[session_name()]))
  3. {
  4.  
  5.  
  6.  
  7. echo 'Я',$_REQUEST[session_name()],' ',session_name(),' служивший тебе, верой и правдой, отныне и до покон веков буду считаться удаленным. Аминь!';
  8.  
  9. $_SESSION = array();
  10. unset($_REQUEST[session_name()]);
  11. }
  12.  
  13. include ("index.php");
  14. ?>
  15.  


Пишет что сессия удалена когда ты нажимаешь "удалить" ?
12. nikitasnv - 13 Декабря, 2008 - 21:06:40 - перейти к сообщению
valenok пишет:
Пишет что сессия удалена когда ты нажимаешь "удалить" ?

Так делать нельзя, т.к. перед session_start(); ничего не должно выводиться!

А вообще я решил проблему по другому. Просто если не передаются переменные — открывать новую сессию.

Это далеко не лучшее решение, поэтому жду помощи.
13. valenok - 13 Декабря, 2008 - 23:04:00 - перейти к сообщению
Поторопился и не туда вписал.

 

Powered by ExBB FM 1.0 RC1