Почему session_start необходим при использовании сеанса?

Почему я могу использовать setcookie без какой-либо подготовки, а session_start() перед использованием $_SESSION ? И я думаю, что они работают одинаково.

Solutions Collecting From Web of "Почему session_start необходим при использовании сеанса?"

Потому что setcookie () определяет cookie для отправки вместе с остальными HTTP-заголовками . Это совсем другое дело, чем то, что делает session_start () , например создание сеанса или возобновление текущего на основе идентификатора сеанса, переданного через запрос GET или POST, или переданного через файл cookie.

Первый просто добавляет что-то в заголовок и отправляет его в браузер, в то время как другой получает идентификатор сеанса из $ _COOKIE или $ _GET или $ _POST, а затем пытается найти файл сеанса в session_save_path и, когда найден неэтериализующий значения его в $ _SESSION, а если нет, создайте новый сеанс, возможно, используя setcookie в процессе установки идентификатора сеанса.

См. Главу «Сессии в руководстве PHP».


Edit Like @Felix правильно указывает ниже, сессия не обязательно сохраняется в файле. Это не так важно, потому что аргумент остается тем же: session_start найдет и (повторно) инициализирует ваши данные сеанса, в то время как setcookie просто делает то, что подразумевает название.

Для объяснения см. Ответ перед моим. Если вы просто не хотите вызывать функцию start_session (), посмотрите этот параметр в php.ini: session.auto_start

Данные сеанса не обязательно хранятся в файле, как говорит Гордон. С session_set_save_handler() вы можете определить свой собственный бэкэнд, который должен хранить значения, например, в базе данных.

Все эти данные обрабатываются с помощью session_start() . Таким образом, вы можете легко изменить бэкэнд без нарушения вашего приложения.

Примечание. Это только одна причина для session_start() , и снова это намного больше, чем просто настройка файлов cookie.

Данные сеанса не обязательно хранятся в файле, как говорит Гордон. С session_set_save_handler() вы можете определить свой собственный задний конец, который должен хранить значения, например, в базе данных.

Все эти данные обрабатываются с помощью session_start() . Таким образом, вы можете легко изменить свою цель, не нарушая приложению.

Примечание. Это только одна причина для session_start() , и снова это намного больше, чем просто настройка файлов cookie.