PHP REQUEST Session

Автор: Aport Суббота, Январь 31st, 2015 Нет комментариев

Рубрика: Язык PHP

Арендовал новый сервер и установил на Debian новый PHP 5.3.3-7+squeeze14 и тут возникла проблема PHP REQUEST не содержал в себе $_COOKIE.

Сразу скажу, что в своих проектах, где необходимо авторизовать пользователя, я пользуюсь старым добрым механизмом PHP сессий. На страницах которые требуется показывать как посетителям прошедшим авторизацию, так и нет, в самом начале кода применяю такую конструкцию:

if (isset($_REQUEST[session_name()])) session_start();

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

Благодаря тому что сессия не запускается без разбору, немного снижается нагрузка на сервер и решается проблема появления в поисковиках адресов страниц с переменной PHPSESSID в конце.

Недавно в результате переустановки php на локальной машине сессии перестали работать. Более детальное изучение показало, что с ними все нормально, а все дело в том что глобальный массив $_REQUEST просто напросто пуст, вернее никаких сессионных переменных в нем нет. Глянув файлphp.ini , я обнаружил строку:

request_order = «GP»

Значение »GP» параметра request_order говорит о том, что в массив $_REQUEST будут заноситься только $_GET или $_POST, получается если переменная передается через $_COOKIE, а в нашем случаем с PHPSESSID именно так и происходит, то она в массиве не будет доступна. Для того чтобы добавить в $_REQUEST переменные из $_COOKIE, изменим ее на:

request_order = «GPC«

Далее сохрате файл и перезапустите Apache и вуаля — всё заработает!

p.s. а еще можно писать букву S, что означает SESSION

И не забывайте про то, чтобы глобально были доступны GET + POST + COOKIE + SESSION:

variables_order = «GPCS»

Источники: 1 и 2

 

Источник: yapro.ru

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

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты