give_cookie.php
<?php if (!isset($_COOKIE["muffin"])) setcookie("muffin", "55", 100 * 60 * 60 * 24 * 30); $_COOKIE["lid"]=true; ?>
jar.php
<?php var_dump($_COOKIE); if($_COOKIE["lid"]) echo "open"; ?>
Выполнение кода в этом порядке дает мне вывод:
array (0) {} Примечание: Неопределенный индекс: lid в jar.php в строке 3
jar.php
кода из jar.php
в give_cookie.php
дает мне вывод:
array (1) {["lid"] => bool (true)} open
Вы должны указывать временную метку UNIX, когда файл cookie будет истек (рассчитан с эпохи) в качестве третьего аргумента функции вызова функции.
Время истечения срока действия файла cookie. Это временная метка Unix, так что это количество секунд с эпохи. Другими словами, вы, скорее всего, установите это с помощью функции time () плюс количество секунд, прежде чем вы захотите, чтобы она истекла. Или вы можете использовать mktime (). time () + 60 * 60 * 24 * 30 истечет через 30 дней. Если установлено значение 0 или опущено, файл cookie истекает в конце сеанса (когда браузер закрывается).
Я предлагаю вам ознакомиться с документацией для setcookie
.
вы устанавливаете файл cookie для muffin
и пытаетесь извлечь lid
Вам также нужно установить setcookie для lid
.
я думаю, что время, которое вы настраиваете, все еще в прошлом
В данный момент
time() = 1348584550 100 * 60 * 60 * 24 * 30 = 259200000
поэтому постарайтесь
setcookie("muffin", "55", time() + (100 * 60 * 60 * 24 * 30)); if($_COOKIE["muffin"]) echo "open";
Другие ответы правильные, но есть еще одно соображение. Cookies устанавливаются, когда сервер отправляет html клиенту , и они получаются от пользователя, когда пользователь запрашивает страницу . Это означает, что если вы попытаетесь прочитать cookie, который вы только что установили правильно , он будет пуст до следующего раза, когда пользователь перезагрузит страницу. Единственный способ избежать этого – как вы это делали, не уверен, намеренно или нет, вручную назначить значение cookie и установить его одновременно, поскольку он является суперглобалистом. Это не является хорошей практикой, так как ценность Cookie теряется для этого выполнения. Это должно работать, но не много работать:
give_cookie.php
<?php if (!isset($_COOKIE["muffin"])) setcookie("muffin", "55", 100 * 60 * 60 * 24 * 30); setcookie("lid", TRUE, time() + 100 * 60 * 60 * 24 * 30); $_COOKIE["lid"]=TRUE; ?>
jar.php
<?php if($_COOKIE["lid"]) echo "open"; ?>
PS, у вас еще много проблем с вашим кодом (кроме того, он ничего не полезен). Расскажите нам, чего вы пытаетесь достичь, чтобы мы могли помочь вам немного больше.