Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:
реклама

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сессии и session_start()

Q: Выдается ошибка "Cannot send session cookie - headers already sent by".
Q: Почему сессии не работают ?()

Ошибка возникает из-за того, что что-то выводится перед session_start(), а этого делать нельзя:

---[ file.php ]---
<?
print "aaaaaaaaaa";
session_start();
?>
---[ file.php ]---

также нельзя так (первая строка пустая):

---[ file.php ]---

<?
session_start();
?>
---[ file.php ]---

Нужно делать вот так:

---[ file.php ]---
<?
session_start();
print "aaaaaaaaaa";
?>
---[ file.php ]---

Все из-за того что HTTP ответ состоит из двух частей - заголовка и тела документа. Тело документ отделается от заголовка пустой строкой, например:

HTTP/1.1 200 OK
Date: Fri, 13 Feb 2004 10:02:00 GMT
Server: Apache/1.3.23 (Unix) PHP/4.1.2 rus/PL30.11
X-Powered-By: PHP/4.1.2
Connection: close
Content-Type: text/html; charset=windows-1251
Expires: Thu, 01 Jan 1970 00:00:01 GMT
Last-Modified: Fri, 13 Feb 2004 10:02:00 GMT

<HTML>
<HEAD>
....

ID сессии хранится в Cookies, а кукисы устанавливаются именно в заголовке. Если начинается вывод данных, то PHP формирует и отправляет заголовок. После этого функции setcookie(), header() и session_start() не работают.

Посмотрите функции: ob_start, header, setcookie, session_start


Оглавление

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог