Вопрос по функции session_start в PHP

315
19 февраля 2017, 11:59

Привет.

Вопрос по функции session_start() в PHP. Я так понял, что, когда интерпретатор PHP видит функцию session_start(), то при отсутствии сессии создается поле Set-Cookie:sessionid=... в заголовке http-ответа сервера. Но поля заголовка http могут создаваться только ДО начала вывода данных в тело ответа сервера - до вывода в тело каких-либо символов (разметки, пробелов...). Получается, что тэги <? ?> должны идти в самом начале документа (БЕЗ пробелов перед ними), а внутри <? ?> ДО любого echo должен идти session_start(). Правильно я понимаю?

Answer 1

Во-первых, сессию можно хранить не в cookie (но чтобы там, надо использовать session.use_cookies, поиск по этому параметру приведет к остальным вариантам хранения), соответственно снимается ограничение на то, что нужно ничего не выводить в браузер до ее старта.

Во-вторых, да, нужно стартовать сессию, основанную на cookie, до любого вывода в браузер. Не забудьте, что у вас могут быть файлы в include или require, которые вроде бы содержать только php-код, но на самом деле в конце могут содержать пробел после закрывающего тега ?>. Ради исключения таких ситуаций такие файлы обычно вообще оставляются без закрывающего тега.

READ ALSO
Странное поведение жадного квантификатора

Странное поведение жадного квантификатора

В общем, имеется код регулярного выражения для парсинга атрибутов HTML теговТак вот, по какой-то причине не срабатывает отключение жадного...

312
Как зайти и настроить админку в laravel?

Как зайти и настроить админку в laravel?

Пытаюсь сделать админку SleepingOwl (http://sleeping-owlgithub

675
Обратимый xor на php

Обратимый xor на php

Здравствуйте! Нужна ваша помощь в решении одной задачкиЕсть три переменные:

358
Загрузка аудиозаписи в вк,через api

Загрузка аудиозаписи в вк,через api

Доброго времени суток! Мне необходимо загрузить аудиофайл (wav) в документы ВКонтакте

384