Что именно происходит с помощью средства или кодирования URL-адреса и декодирования URL-адреса при работе с файлами cookie в PHP?
Я изучаю понятие Cookies в PHP по этой ссылке
До сих пор я понял, что
Файл cookie часто используется для идентификации пользователя. Файл cookie - это небольшой файл, который сервер встраивает на компьютер пользователя. Каждый раз, когда один и тот же компьютер запрашивает страницу в браузере, он также отправляет cookie. С помощью PHP вы можете как создавать, так и извлекать значения cookie.
Я изучил следующую демонстрационную программу, представленную по указанному выше адресу:
<!DOCTYPE html>
<?php
$cookie_name = "user";
$cookie_value = "John Doe";
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>
<html>
<body>
<?php
if(!isset($_COOKIE[$cookie_name])) {
echo "Cookie named '" . $cookie_name . "' is not set!";
} else {
echo "Cookie '" . $cookie_name . "' is set!<br>";
echo "Value is: " . $_COOKIE[$cookie_name];
}
?>
<p><strong>Note:</strong> You might have to reload the page to see the value of the cookie.</p>
</body>
</html>
После прохождения вышеупомянутого кода у меня возникло несколько вопросов. Я хочу удовлетворительных ответов для них.
- Поскольку cookie - это не что иное, как файл, который сервер встраивает в компьютер пользователя, тогда где находится код создания файла и манипулирования им? Без манипуляции файлами и кода загрузки файлов, как сервер внедряет файл на компьютер пользователя или как браузер отправляет запрос на сервер вместе с файлом cookie?
- Хотя, если я считаю, что файл cookie был внедрен сервером на компьютер пользователя, то где находится файл на моем компьютере, работающий под управлением Windows 10 Home Edition?
Я также прочитал одно утверждение, как показано ниже:
Примечание. Значение файла cookie автоматически кодируется URL-адресом при отправке файла cookie и автоматически декодируется при получении (для предотвращения кодирования URL-адреса используйте вместо него функцию setrawcookie()).
Позвольте мне откровенно сказать вам, что я совсем не понял, что означает это предложение и что именно происходит при отправке и получении файлов cookie. Я также не знаю, что такое кодирование и декодирование URL в PHP?
Было бы лучше, если бы кто-то снял все мои сомнения с хорошим объяснительным ответом и примером рабочего кода.
Позвольте мне честно сказать вам, что, как я слышал от опытных разработчиков PHP, Cookies и Session являются наиболее важными, основными понятиями в PHP. Но я нахожу их трудными для понимания. Поэтому, пожалуйста, объясните мне простым и ясным языком, что я мог бы понять эти концепции лучше и проще.
Короче говоря, я хочу понять концепцию, функционирование и использование файлов cookie в PHP на примере рабочего кода.
Благодарю вас.
2 ответа
Хранение и транспортировка куки
Учебное пособие является неправильным или, по крайней мере, немного запутанным. Традиционно файлы cookie сохранялись в виде отдельных файлов, но это всего лишь подробности реализации, и клиент, браузер полностью определяет, как файлы cookie хранятся, если вообще.
URL-кодировка и -decoding - это способ кодирования специальных символов, которые не совместимы с URL-адресами в другой последовательности, например, пробел конвертируется в%20. Это происходит для того, чтобы убедиться, что куки хорошо достигают другой стороны и могут храниться правильно, но, как и фраза о файлах, они не имеют отношения к использованию куки.
Так для чего это нужно?
Смысл куки в том, что это часть информации, которая отправляется туда и обратно. Когда вы звоните setcookie
та информация ($cookie_value
) отправляется с другим контентом обратно клиенту (скажем, браузеру), который сделал запрос. Клиент может хранить эту информацию, и когда он делает другой запрос на тот же сервер, он отправит значение cookie вместе с запросом.
Это позволяет серверу снова использовать это значение и признать, что это тот же клиент, который сделал запрос.
Как правило, файлы cookie используются для сеансов, в которых вы можете войти, и сайт запомнит, кто вы. В простейшей форме (НО НЕ ДЕЛАЙТЕ ЭТОГО) значение cookie может содержать информацию для входа в систему, поэтому при каждом запросе вы можете убедиться, что это снова тот же пользователь. Отправлять такую информацию немного небезопасно, потому что информация легко читается из файла и из сетевого трафика, поэтому велика вероятность того, что вы потеряете личную информацию. Более того, это не позволит вам различать разные сеансы (когда Вы входите в систему на двух разных компьютерах или в двух разных браузерах).
Лучший и более распространенный сценарий - это когда пользовательская информация запоминается на сервере, например, с помощью $_SESSION
переменная. Вместо того, чтобы помещать все учетные данные в файл cookie, создается уникальный идентификатор, связанный с информацией о сеансе. Этот идентификатор сеанса хранится в файле cookie.
Итак, чтобы использовать куки,
- Вам нужно знать, как установить cookie и как его прочитать.
- Вы хотели бы знать, что он хранится в браузере и отправляется туда и обратно с запросами и ответами. (И как проверить и сбросить его значение в браузере, чтобы вам было проще проверять и отлаживать ваш код).
- Возможно, вас не очень заботит, как кодируется файл cookie и как и где он хранится на диске. Это детали реализации, которые не имеют значения для общего использования.
И чтобы проводить сеансы, вам не нужно самим устанавливать куки!
Поскольку потребность в сессиях очень распространена, PHP имеет полную реализацию для хранения информации о сессиях и отправки куки, чтобы запомнить посетителя. Вам даже не нужно звонить setcookie
сам!
Лучше всего начать с чтения session_start()
и связанные с ним функции. В основном, если вы позвоните session_start()
в начале вашего сценария, вы можете просто манипулировать $_SESSION
переменная, и все значения в ней будут храниться в запросе. Все это использование куки, а также хранение информации о сеансе на сервере полностью скрыто этим маленьким кусочком PHP-магии.
Браузеры используют файлы cookie для хранения информации, да, это файлы, но они не загружаются и не загружаются с / на сервер. Процесс примерно такой:
- Браузер подключается к серверу и отправляет некоторые данные, включая заголовки, для идентификации запроса (получить, опубликовать и т. Д.) И отправляет файлы cookie, если таковые имеются.
- Сервер получает эти заголовки и отправляет свои собственные заголовки, чтобы дать указание браузеру перенаправить на другую страницу, создать файлы cookie или просто указать тип содержимого, которое будет отправлено следующим.
Наконец, браузер получает содержимое, отправленное сервером, и анализирует его для отображения страницы, загрузки файла или перенаправления на другой URL-адрес.
- Браузер - это тот, кто пишет куки.
- Как сказал @rtfm, расположение файлов cookie зависит от браузера и SO.