Хотя я установил cookie с помощью setcookie
, почему он пропускает часть else
во время первого setcookie
/ первого посещения?
<?php setcookie("dan", "Sony", time()+60); if(isset($_COOKIE['dan'])) { echo "Set"; } else { echo "Not yet!"; } ?>
PS: Я знаю, что это наивный вопрос, и он занижен, но я не нашел лучшего форума, кроме StackOverflow.
setcookie () просто упорядочивает заголовки HTML, испускаемые скриптом PHP, чтобы содержать необходимый заголовок «Set-Cookie:». Браузер отвечает, сохраняя файл cookie, а затем срывая его при следующем запросе на сайт.
setcookie () не устанавливает никаких переменных внутри исполняемого в настоящее время скрипта, поэтому вы ничего не видите в первый раз.
Вы не можете получить значение из $_COOKIE
в том же запросе, что и setcookie
, вы можете получить его от следующего запроса.
В первый раз, когда вы только укажете браузеру, чтобы установить файл cookie, в то время в заголовке запроса нет данных cookie (которое можно получить из $_COOKIE
).
Установите файлы cookie с помощью javascript.
function createCookie(name,days,value) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name) { //cookie reader function var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function eraseCookie(name) { //cookie eraser function createCookie(name,"",-1); } createCookie("test", 1, 1); var mycookie= readCookie("test"); alert(mycookie);
)function createCookie(name,days,value) { if (days) { var date = new Date(); date.setTime(date.getTime()+(days*24*60*60*1000)); var expires = "; expires="+date.toGMTString(); } else var expires = ""; document.cookie = name+"="+value+expires+"; path=/"; } function readCookie(name) { //cookie reader function var nameEQ = name + "="; var ca = document.cookie.split(';'); for(var i=0;i < ca.length;i++) { var c = ca[i]; while (c.charAt(0)==' ') c = c.substring(1,c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); } return null; } function eraseCookie(name) { //cookie eraser function createCookie(name,"",-1); } createCookie("test", 1, 1); var mycookie= readCookie("test"); alert(mycookie);