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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Warning: session_start(): Cannot send session cache limiter - headers already sent

Сообщения:  [1-3] 

 
 автор: cheops   (28.02.2007 в 01:34)   письмо автору
 
   для: Booblik   (27.02.2007 в 22:39)
 

Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода 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

   
 
 автор: Ralph   (28.02.2007 в 00:01)   письмо автору
 
   для: Booblik   (27.02.2007 в 22:39)
 

То,что у вас там на странице-это html-код,который выводится в браузер,а header должны отсылаться и сессия открываться session_start'om ДО этого вывода.Лучше всего session_start писать в самом начале страницы.

   
 
 автор: Booblik   (27.02.2007 в 22:39)   письмо автору
 
 

Привет, я тут с сессиями маюсь

Вначале запускаю сессию:


<?
    session_start
();
    
$_SESSION['username'] = “Booblik”;
?>


Потом на другой странице выважу данные



<?
    session_start
();
    echo 
'Привет, '.$_SESSION['username']."<br>";
?>


Вот в чём загвоздка, если этот скрипт открывать в пустом окне всё нормально, выводиться сообщение Привет, Booblik

А вот если я его вставляю на какую-нибудь страницу сайта выскакивает ошибка:

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/b/booblik.h17.ru/WWW/engine/header.engine.php:12) in /home/b/booblik.h17.ru/WWW/ses/name.php on line 3

Я как понял тут написано: невозможно отправить данные сессии, они уже отправлены из файла /header.engine.php

Но в этом фале у меня вот что:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
   <head>

   
      <title>
             MooW studio
      </title>
       
      <link href="engine/style.css" rel="stylesheet" type="text/css" />
      
   </head>


Эта ошибка выскакивает, но всё равно сессия работает, выводиться сообщение Привет, Booblik

Подскажите как избавиться от этой ошибки?

И ещё хотелась бы узнать, как написать такой скрипт:

Если переменная $_SESSION['username'] существует, тогда выводим


<?
    session_start
();
    echo 
'Привет, '.$_SESSION['username']."<br>";
?>


А если не существует, тогда предлогаем начать сессию.

   

Сообщения:  [1-3] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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