В случае PHP Curl, когда нам нужно хранить / читать файлы cookie с точки зрения веб-очистки, кажется, что многие ресурсы там рекомендуют использовать файл для обработки файлов cookie с помощью этих опций
curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieJarFilename); curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieJarFilename);
Суть в том, что они используют один файл как файл cookiejar (обычно .txt).
Но в реальном сценарии наш веб-сайт не только доступен одному компьютеру, но, скорее всего, к нему одновременно подключается множество компьютеров, а также есть такие боты, как Googlebots, Yahoo Slurp и т. Д.
Итак, с единственным .txt- файлом, не очевидно ли, что кувшин cookie будет перезаписывать один и тот же текстовый файл, сделать его настоящим беспорядком для cookie?
Или я ошибаюсь здесь?
Какой «правильный» метод обработки файлов cookie?
Если на вашей странице есть несколько пользователей, и вам нужно выполнить curl
с уникальными куки-файлами для всех, то вы можете сделать несколько действий для этого сценария.
1) Если ваш пользователь аутентифицирован и имеет начало $_SESSION
на вашем конце, вы можете использовать session_id()
для имени файла cookie.
2) Если ваш пользователь не требует сеанса (например, бота Google), вы можете создать файл cookie с использованием timestamp + дополнительного случайного числа для вашего имени файла cookie. Например:
$cookieName = time()."_".substr(md5(microtime()),0,5).".txt"; // Would output something like: // `1388788940_91ab4.txt`
Но в этом случае вы не можете повторно использовать файл cookie, если пользователь вернется к вам через 5 минут (если вы не установите cookie пользователя с вашим файлом файла cookie).
В любом случае убедитесь, что вы периодически очищаете эти файлы. В противном случае у вас будет множество файлов cookie, созданных в вашем каталоге.
Если вы хотите, чтобы PHP выполнял очистку для вас.
Используйте tempnam, как bagz_man, но после использования прочитайте содержимое файла и сохраните его в своем сеансе. Затем вы можете удалить временный файл. Создайте новый файл в следующий раз, когда вам это нужно.
Единственное, что осталось позади – это сеанс, на который php заботится.