Есть ли способ аннулировать cookie пользователя?

Есть ли способ аннулировать cookie пользователя?

Сценарий:

  1. Пользователь приходит на мой сайт (я могу получить любые данные, которые я хочу);
  2. Пользователь оставляет страницы;
  3. Через некоторое время обратный вызов с другого сервера поставляется с идентификатором пользователя. На этом этапе мне необходимо аннулировать сеанс пользователя и файлы cookie.

С сессиями это было так просто:

session_id($user['session_id']); session_destroy(); 

Как добиться этого с помощью куки?

Пожалуйста, см. Комментарии в этом сообщении для более подробной информации и того, как это связано с Facebook.

Простым решением было бы заменить бит, в котором PHP-SDK хранит информацию о пользователе от файлов cookie к сеансу, но переход к файлу пакета всегда является плохим.

РЕДАКТИРОВАТЬ

Ваши другие комментарии предполагают, что вы действительно не знаете, что такое печенье в буквальном смысле, поэтому я заранее извиняюсь, если вы уже понимаете, что я собираюсь объяснить.

Хотя я подозреваю, что вам нужна какая-то специальная помощь Facebook для ответа или решения вашей реальной проблемы, я хотел бы указать, что такое куки-файл:

 HTTP/1.1 200 OK Content-type: text/html Set-Cookie: name=value Set-Cookie: name2=value2; Expires=Wed, 09 Jun 2021 10:18:14 GMT 

http://en.wikipedia.org/wiki/HTTP_cookie#Setting_a_cookie

Так передаются файлы cookie между клиентом и сервером (реквестер / ответчик). Вы можете использовать вкладку «Сеть» в Firebug или Chrome Console, чтобы сами убедиться, как делаются запросы и какие данные отправляются туда и обратно. Они не по своей природе «регистрируются» систематически, не являются конечными «вещами» как таковыми, а просто частью заголовка, который включен в пакет запроса и ответа, что-то вроде поля CC / BCC в заголовке электронной почты: псевдо -прозрачный, но описательный.

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

Куки, однако, обычно не обрабатываются таким образом. Они просто транспорты, значит, заканчиваются, заполняя пустоту между GET и POST.


Вы не «аннулируете cookie» так же, как недействительные разрешения, которые данные cookie распространяют на тех, кто использует его в сочетании с запросами.

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

Однако cookie – это только транспорт для этих данных. Вы должны иметь возможность перехватывать, обнаруживать и блокировать любой доступ, который он предоставляет держателю, чтобы сделать его «бесполезным».

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

Вы не можете установить (unset / invalidate) cookie для пользователя, который не делает запрос на ваш сервер напрямую. Вам нужно будет сделать еще немного работы.

Я бы сказал об этом так:

Храните файлы cookie, которые вы задали для пользователя где-нибудь (db, redis, что угодно). Таким образом, вы узнаете, какой пользователь cookie имеет. Затем, когда приходит запрос на недействительность, отметьте файлы cookie для этого пользователя в вашем хранилище как удаленные (или что-то в этом роде). Затем каждый раз, когда пользователь запрашивает вашу страницу, проверяйте, есть ли у вас удаленные файлы cookie в вашем хранилище. Если он уничтожит свою сессию и аннулирует свои файлы cookie (например, в прошлом).

Cookie живет на стороне клиента, вы ничего не можете с ним сделать на стороне сервера. Однако, если ваш «Через некоторое время» означает, что файл cookie должен быть истек через какое-то время, вы должны установить время истечения срока действия, когда вы устанавливаете файл cookie. Вам не нужно беспокоиться о том, остается ли пользователь на своей странице или нет, потому что, если он уйдет и снова получит доступ через некоторое время, браузер сделает это за вас.

Например, приведенный ниже код показывает, как установить cookie, срок действия которого истекает через 1 час.

 $value = 'something from somewhere'; setcookie("TestCookie", $value); setcookie("TestCookie", $value, time()+3600); /* expire in 1 hour */ setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1);