Что произойдет, если файлы cookie будут отключены?
Здесь довольно простой вопрос. В PHP, если в браузере пользователя отключены файлы cookie, вы не можете использовать как серверные файлы cookie ($_SESSION
), так И клиентские файлы cookie ($_COOKIE
, setcookie
) или только последние отключены?
В принципе, вы не можете заставить пользователя войти в систему или сделать что-либо, что требует сеанса, верно?
Кроме того, в каком случае кто-то хотел бы отключить файлы cookie?
Спасибо!
3 answers
Да, это правда. Как сеансы, так и обычные файлы cookie являются обычными файлами cookie. Если пользователь не принимает файлы cookie, он не может использовать какие-либо функции, включенные ими. Это означает, что для этого пользователя практически весь Интернет сломается, вот почему в наши дни практически нет людей, у которых полностью отключены файлы cookie.
PHP имеет встроенный механизм под названием прозрачные идентификаторы сеансов, который автоматически переписывает все ссылки, чтобы содержать идентификатор сеанса в запросе параметр. Я бы не советовал его использовать, так как идентификаторы сеансов в URL-адресе открывают совершенно новую банку червей.
Для удобства пользователя я бы рекомендовал вам проверить, включены ли у пользователя файлы cookie или нет (установите файл cookie, перенаправьте на следующую страницу с флагом в URL-адресе, на котором должны быть установлены файлы cookie , посмотрите, вернете ли вы какие-либо файлы cookie), и если нет, пожалуйста, посоветуйте пользователю включить их.
Вы можете отслеживать пользователя по $_GET
.
Представьте, что на каждой отдельной странице, которую посещает пользователь, вы передаете ?user_id=XYZ123
, тогда вы бы реализовали очень похожую идентификацию сервера. У него есть очевидные недостатки:
- если вы скопируете/вставите URL-адрес, вы отдадите свой идентификатор сеанса
- из-за 1 сеанса хай-джек еще менее технологичен
Почему пользователи отключают файлы cookie?
Пользователи, как правило, используют файлы cookie от первого и третьего лица, но они происходят из разных пород.
Файлы cookie первой стороны, как правило, в порядке. Когда вы посещаете Facebook, ожидается, что Facebook хранит файлы cookie для хранения ваших взаимодействий с сервером.
Чего не ожидается, так это того, что рекламная компания, которая добавляет как на Facebook, так и на eBay, вернет ваш файл cookie и проверит, ах, так что этот парень был на eBay, искал xyz, так что теперь, когда он на Facebook, я покажу ему abc, чтобы заставить его купить и т. Д. и т. Д.
Я думаю, вам следует прочитать справочное руководство по сеансам http://www.php.net/manual/en/session.idpassing.php
Короче говоря, если ваш сервер не может найти session_id, он не сможет восстановить сеанс. Но вы можете использовать альтернативные способы хранения значений сеанса. Или вы можете создать базу session_od на основе параметров клиентской среды пользователя.