Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сессии
 
 автор: anbex   (17.06.2006 в 22:52)
 
 

Народ помогите, не получается передать сессии, всё вроде правильно сделал. У меня деневер, может у него какиенибудь особенности?
Вот я задаю:

<?php       
session_start
();
$_SESSION['error'] = "Ошибка";
echo 
"<html><head><meta http-equiv='Refresh' content='0; URL=index.php?id=error'></head></html>";
?>


Вот я получаю(ничего НЕ получаю, или получаю через раз):


<?
switch($id) {
   case 
error:
         
session_start();
         echo 
$_SESSION['error'];
   break;      }
?>

   
 
 автор: cheops   (17.06.2006 в 23:46)   письмо автору
 
   для: anbex   (17.06.2006 в 22:52)
 

А функцию session_start() вы вызываете на каждой странице, где обращаетесь к суперглобальному массиву $_SESSION?

   
 
 автор: anbex   (18.06.2006 в 00:00)
 
   для: cheops   (17.06.2006 в 23:46)
 

Да, на каждой.
Извините, что отвлёк, всё самой сабой прошло... Мистика!!!
Всё теперь работает.

   
 
 автор: anbex   (18.06.2006 в 12:35)
 
   для: anbex   (18.06.2006 в 00:00)
 

А хотя сейчас опять глючит!
Через раз работает(через раз передаётся информация), сдесь ктото вроде писал уже, что тоже через 1 раз работает.

   
 
 автор: RV   (18.06.2006 в 14:26)   письмо автору
 
   для: anbex   (18.06.2006 в 12:35)
 

Может
switch($_GET['id']) {

   
 
 автор: anbex   (19.06.2006 в 10:02)
 
   для: RV   (18.06.2006 в 14:26)
 

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at z:\home\Test.ru\www\guestbookher\index_gb.php:8) in z:\home\Test.ru\www\guestbookher\index_gb.php on line 14
Что может значить????

   
 
 автор: cheops   (19.06.2006 в 11:44)   письмо автору
 
   для: anbex   (19.06.2006 в 10:02)
 

Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.
http://www.softtime.ru/group/id_group=12
http://www.softtime.ru/forum/ead.php?id_forum=1&id_theme=147
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=148
Вы можете также включить буфферизацию, если имеете доступ к конфигурационному файлу php.ini
output_buffering = On


http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8484

   
 
 автор: anbex   (19.06.2006 в 13:51)
 
   для: cheops   (19.06.2006 в 11:44)
 

Да, действительно. Чё то сначало не прочёл:
Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>(HTML). Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.

   
 
 автор: anbex   (22.06.2006 в 09:59)
 
   для: anbex   (19.06.2006 в 13:51)
 

Если мне нужно удалить всю сессию то нужно использовать сначало для каждой переменной
unset($_SESSION['id']);
А потом только
session_destroy();
Или же стразу можно session_destroy();

   
 
 автор: valenok   (22.06.2006 в 10:11)   письмо автору
 
   для: anbex   (22.06.2006 в 09:59)
 


$_SESSION=array();
$_POST=array();
$_GET=array();
$_COOKIE=array();


Адаляет всё и безжалостно.

   
 
 автор: valenok   (22.06.2006 в 10:13)   письмо автору
 
   для: valenok   (22.06.2006 в 10:11)
 

Также есть функция session_unset -- Free all session variables

   
 
 автор: valenok   (22.06.2006 в 10:14)   письмо автору
 
   для: anbex   (22.06.2006 в 09:59)
 

Я бы тебе посоветовал на такие вопросы - чтоб не ждать долго ответа - орсто брать и пробовать.

   
 
 автор: valenok   (22.06.2006 в 10:17)   письмо автору
 
   для: anbex   (22.06.2006 в 09:59)
 

session_start();
session_destroy();
print "You have been logged out.";

At this point, the user's session file should have been cleared off of the server. The only way the session id might then be reused (causing the session file to reappear) is if the user's browser remains open and they initiate a request that calls session_start again. Since the browser will still have the session id cached, PHP may use the same id again and basically re-create the session file. This behavior is fine as long as you understand it.

Простой перевод:
Если вы сразу воспользовались функцией session_destroy()
а пользователь не закрыл браузер и опять зашёл на страничку где запускается функция session_start() , будет не хорошо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования