Как преобразовать сайт из отслеживания сеансов на основе URL в отслеживание сеансов на основе Cookies в PHP? - PullRequest
0 голосов
/ 23 ноября 2011

Я унаследовал сайт, который использует отслеживание сеансов на основе URL.

Вот настройки сеанса через phpinfo ():

phpinfo session settings

Вот код, используемый на каждой странице скрипта для запуска сеансов:

ini_set('session.use_cookies', 0);
ini_set('session.name', 'ID');
ini_set('arg_separator.output', '&');
ini_set('session.gc_maxlifetime', 1440);
ini_set('session.gc_probability', 30);
session_start();

PHP автоматически добавляет &SID=[sessionid] к любой внутренней ссылке на сайте. Кроме того, во всем скрипте PHP есть внутренние URL, добавленные вручную с помощью .'&ID='.session_id().

Я полагаю, что предыдущий разработчик так и сделал, чтобы сайт работал на мобильных телефонах без файлов cookie.

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

Кроме того, возможно ли, чтобы сайт обрабатывал сеансы по-разному в зависимости от того, принимает ли пользователь файлы cookie или нет? Если так, то как?

Ответы [ 2 ]

0 голосов
/ 23 ноября 2011

измените значение php.ini (или с ini_set) для session.use_only_cookies на on, что должно помешать PHP добавить SID к URL-адресам

Конечно, вам также нужно избавитьсякаждого ini_set('session.use_cookies', 0); добавляемого вручную session_id()

0 голосов
/ 23 ноября 2011

Похоже, что php.ini имеет правильную настройку для use_cookies, так что вы можете удалить первую строку, чтобы включить это, или изменить ее на 1. Если посмотреть на опции конфигурации сеанса , это не так похоже, есть способ автоматически использовать идентификатор сеанса на основе URL, если браузер не принимает файлы cookie.

...