Что произойдет, если файлы cookie отключены?

Довольно простой вопрос. В PHP, если в браузере пользователя отключены файлы cookie, вы не можете использовать файлы cookie сервера ($_SESSION) и файлы cookie клиента ($_COOKIE, setcookie) или только последние отключены? В принципе, вы не можете заставить пользователя войти в систему или сделать что-либо, что требует сеанса, правильно?

Кроме того, в этом случае кто-то хочет отключить cookies?

Спасибо!

Ответ 1

Да, это правда. Оба сеанса и обычные файлы cookie - это обычные файлы cookie. Если пользователь не принимает файлы cookie, он не может использовать любую функциональность, включенную ими. Это означает, что весь интернет будет ломаться для этого пользователя, поэтому в этот день и в возрасте практически никто, у которого есть файлы cookie, полностью отключены.

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

Для удобства пользователей я бы рекомендовал вам проверить, включен ли cookie пользователя или нет (установите cookie, переадресуйте на следующую страницу с флагом в URL-адресе, в котором должны быть установлены файлы cookie), посмотрите, есть ли у вас файлы cookie), а если нет, сообщите об этом пользователю.

Ответ 2

Вы можете отслеживать пользователя с помощью $_GET.

Представьте, что на каждой странице, которую посещает пользователь, вы проходите ?user_id=XYZ123, тогда вы бы применили очень похожую идентификацию сервера. У этого есть очевидные недостатки:

  • Если вы скопируете/вставляете URL-адрес, вы отпустите свой session_id
  • из-за 1 сеанса high-jack еще менее экономно

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

Первые файлы cookie, как правило, в порядке. Когда вы посещаете Facebook, ожидается, что Facebook сохранит файл cookie для хранения ваших взаимодействий с сервером.

Что не ожидалось, так это то, что рекламная компания, которая добавляет как на Facebook, так и на eBay, получает ваш cookie обратно и проверяет, ах, поэтому этот парень был на eBay, ища xyz, так что теперь, когда он на Facebook, я собираюсь показать его abc, чтобы заставить его купить и т.д. и т.д.

Ответ 3

Я думаю, вы должны прочитать руководство по работе сессии http://www.php.net/manual/en/session.idpassing.php

Короче говоря, если ваш сервер не может найти session_id, он не сможет восстановить сеанс. Но вы можете использовать альтернативные способы хранения значений сеанса. Или вы можете создать базу session_od для параметров пользовательской клиентской среды.