#php #cookies
#php #файлы cookie
Вопрос:
Хорошо, допустим, мы приводим пример:
<?php
$hello = "no";
if ($hello == "yes"){
setcookie("hello", '1', time() 14400, '/', false, false, false);
echo "hey";
}else{
echo "no";
}
?>
Таким образом, приведенный выше код должен отражать «нет» на странице и НЕ устанавливать cookie.
Он повторяет no и устанавливает cookie.
Как может быть установлен файл cookie без повторения hey?
Да, мы удаляем cookie из нашего браузера перед повторным запуском страницы и устанавливаем его каждый раз.
У кого-нибудь еще было что-то подобное раньше? Это сводит меня с ума. В операторах if нет ничего плохого. Файл cookie не должен быть установлен, но это так?
Комментарии:
1. Попробуйте очистить ваши файлы cookie в вашем браузере. Возможно, у вас установлен файл cookie из предыдущей версии вашей программы.
2. Никто не думает, что вы глупы, но когда возникают «невозможные» ситуации, подобные этой, разумно подвергать сомнению все , чтобы уменьшить дергание за волосы. Как вы проверяете, установлен ли файл cookie? Можете ли вы воспроизвести поведение с точным кодом, который вы опубликовали ?
3. Я проверяю его, вручную заходя в свой браузер и находя файл cookie. Он устанавливается каждый раз при загрузке страницы, и этого не должно быть! Я ВСЕ проверил, и все правильно.. Я понятия не имею, почему cookie устанавливается, этого просто не должно быть … если cookie устанавливается, почему он не повторяет hey !??
Ответ №1:
Перед тестированием отключите cookie и убедитесь, что вы установили разумный срок действия.
Ответ №2:
Cookie не устанавливается этим кодом. Однако, возможно, он был установлен ранее и сохранен в вашем браузере. Используйте режим конфиденциальности вашего браузера, чтобы запросить сайт без файлов cookie, или настройки cookie / разработчика, чтобы удалить все существующие файлы cookie.
Другой альтернативой, чтобы узнать, что происходит на самом деле, является curl:
$ curl -i http://phihag.de/2011/so/cookie.php
HTTP/1.1 200 OK
Date: Fri, 14 Oct 2011 16:13:32 GMT
Server: Apache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
Content-Language: de
no
$ curl -i http://phihag.de/2011/so/cookie.php?givemecookie=true
HTTP/1.1 200 OK
Date: Fri, 14 Oct 2011 16:13:41 GMT
Server: Apache
Set-Cookie: hello=1; expires=Fri, 14-Oct-2011 20:13:41 GMT; path=/
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html; charset=utf-8
Content-Language: de
hey
Убедитесь, что вы редактируете правильный код (например, добавляя echo "world";
к нему и наблюдая за результатом). Если это не поможет, вы действительно должны дать нам URL, который демонстрирует это загадочное поведение.