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

Форум PHP

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

 

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

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

тема: Warning: session_start(): Cannot send session cookie - headers already sent by
 
 автор: Oberon   (25.10.2007 в 17:52)   письмо автору
 
 

Пытаюсь с сессиями разобраться...
вот скрипт


<?php
session_name
('name');
session_start();
$id session_name().'='.session_id();
$a=22245642;
$b="fghfghfg";
$_SESSION['a'] = $a;
$_SESSION['b'] = $b;
print 
'<a href = "2.php?'.$id.'">enter</a>';
?> 


переменные нормально предаются на след страницу через сессию, но, пишет вот такое вот:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at y:\home\localhost\www\1.php:13) in ...
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at y:\home\localhost\www\1.php:13) in

может гдето ошибка, или я чтото не правильно делаю?

   
 
 автор: RV   (25.10.2007 в 17:56)   письмо автору
 
   для: Oberon   (25.10.2007 в 17:52)
 

а вы случайно не смотрели что у вас сдесь: y:\home\localhost\www\1.php:13 ?

   
 
 автор: ШИМ   (25.10.2007 в 17:58)   письмо автору
 
   для: RV   (25.10.2007 в 17:56)
 


session_start()

Нужно запускать в самом начале скрипта, до выполнения...
Попробуй

   
 
 автор: Oberon   (25.10.2007 в 18:12)   письмо автору
 
   для: ШИМ   (25.10.2007 в 17:58)
 

в общем, убрал все лишнее, оставил только заголовок, session_start() перенес,
вот полностью скрипт:


<?php print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"?>
<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http://www.wapforum.org/DTD/xhtml-mobile10.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>page</title>
<meta http-equiv="Content-Type" content="application/vnd.wap.xhtml+xml; charset=utf-8"/>
</head>
<body>
<?php
session_start
();
session_name('name');
$id session_name().'='.session_id();
$a=22245642;
$b="fghfghfg";
$_SESSION['a'] = $a;
$_SESSION['b'] = $b;
print 
'<a href = "2.php?'.$id.'">enter</a>';
?>
</body>
</html>


пишет тоже самое,

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at y:\home\localhost\www\1.php:1) in y:\home\localhost\www\1.php on line 10

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at y:\home\localhost\www\wapquest\1.php:1) in y:\home\localhost\www\1.php on line 10

line 10 в данном случае session_start();
не могу понять, почему вылетает Warning: session_start():

   
 
 автор: dimon   (26.10.2007 в 13:40)   письмо автору
 
   для: Oberon   (25.10.2007 в 18:12)
 

session_start() нужно ставить в самое начало файла вообще... первой строчкой... перед ним не должно быть ничего... чуть ниже я написал объяснение почему так

   
 
 автор: mihdan   (25.10.2007 в 18:09)   письмо автору
 
   для: Oberon   (25.10.2007 в 17:52)
 

session_start() первая строка в файле

   
 
 автор: Oberon   (25.10.2007 в 18:15)   письмо автору
 
   для: mihdan   (25.10.2007 в 18:09)
 

оп... заработало.. спасиб.
почему именно первая строка, этому есть объяснение?

   
 
 автор: sim5   (26.10.2007 в 05:33)   письмо автору
 
   для: Oberon   (25.10.2007 в 18:15)
 

http://softtime.ru/forum/read.php?id_forum=1&id_theme=44921&page=1 - последний комментарий

   
 
 автор: dimon   (26.10.2007 в 13:21)   письмо автору
 
   для: Oberon   (25.10.2007 в 18:15)
 

потому что отправка абсолютно любой информации от сервера клиенту уже требует отправку заголовка какого-либо типа, например content-type = "text/html". По-этому надо вначале сказать серверу, чтоб он начал сохранять данные для сессии, а потом уже отправлять заголовки и те же данные на клиентский браузер. Я вроде это так понял...

   
 
 автор: elenaki   (25.10.2007 в 18:15)   письмо автору
 
   для: mihdan   (25.10.2007 в 18:09)
 

<?php print - это уже вывод..

почему именно первая строка, этому есть объяснение?
=================================================

меня тоже это задолбало. неужели разработчики не могут придумать что-нибудь, чтобы хоть об этой ерунде не думать! :)

   
 
 автор: cheops   (26.10.2007 в 10:55)   письмо автору
 
   для: elenaki   (25.10.2007 в 18:15)
 

Просто кэширование следует включить по умолчанию - проблема сразу отпадёт... PHP интерпретатор и выполняет все строки последовательно - однако, так как данные отправляются по протоколу HTTP, существует ограничение: все HTTP-заголовки должны быть отправлены раньше тела документа. Включение кэширования по умолчанию решило бы эту проблему.

   
 
 автор: mihdan   (26.10.2007 в 12:58)   письмо автору
 
   для: elenaki   (25.10.2007 в 18:15)
 

ob_start() и можете отправлять заголовки в любое время

   
 
 автор: cheops   (26.10.2007 в 10:52)   письмо автору
 
   для: Oberon   (25.10.2007 в 17:52)
 

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

http://www.softtime.ru/group/id_group=12

   
 
 автор: coloboc66   (26.10.2007 в 13:36)   письмо автору
 
   для: cheops   (26.10.2007 в 10:52)
 

Дык вот есть небольшой нюансик, который может здорово испортить настроение: если ваш файл в кодировке UTF-8, то в самом его начале находятся три служебных байта (BOM), и эти байты само собой отправляются впереди всех заголовков. А потом ломаешь голову: почему выскакивают предупреждения?!

   
 
 автор: Ralph   (26.10.2007 в 18:11)   письмо автору
 
   для: coloboc66   (26.10.2007 в 13:36)
 

Небольшое уточнение"...если ваш файл в кодировке UTF- 8 и редактировался в некоторых редакторах, то в самом его начале находятся три служебных байта (BOM)... "

   
 
 автор: Oberon   (27.10.2007 в 10:29)   письмо автору
 
   для: Ralph   (26.10.2007 в 18:11)
 

У меня на одной странице вылазит такая непонятная ошибка... Все перепроверил уже, не могу понять,...

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0

   
 
 автор: sim5   (27.10.2007 в 11:34)   письмо автору
 
   для: Oberon   (27.10.2007 в 10:29)
 

Предупреждение: Unknown(): Ваш сценарий возможно полагается на побочный эффект сессий, который существовал до PHP 4.2.3. Доводим до вашего сведения, что это расширение сессии не рассматривает глобальные переменные как источник данных, если register_globals включен. Вы можете отключать эти функциональные возможности и это предупреждение, устанавливая session.bug_compat_42 или session.bug_compat_warn в off, соответственно. Неизвестно в строке 0.

   
 
 автор: Oberon   (27.10.2007 в 12:33)   письмо автору
 
   для: sim5   (27.10.2007 в 11:34)
 

но у меня register_globals off, и переменные передаю точно так же, как и на других страницах.. что за "побочный эффект сессий"?.... не совсем понял,

   
 
 автор: sim5   (27.10.2007 в 12:38)   письмо автору
 
   для: Oberon   (27.10.2007 в 12:33)
 

А вы посмотрите, что у вас в нулевой строке кода, может даже HEX редактором, если потребуется.

   
Rambler's Top100
вверх

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