Любая причина, по которой этот фрагмент кода не будет устанавливать cookie правильно?

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

Возможно, я не дам вам достаточно информации, поэтому дайте мне знать, если да.

...some database queries... <?php $expire=time()+(7 * 24 * 60 * 60); $row = mysql_fetch_array($query); $email = $row['email']; $userinfo['name'] = $name; $userinfo['email'] = $email; $userinfo = serialize($userinfo); setcookie("user", $userinfo, $expire); echo '<script type="text/javascript"> window.location = "../index.php"; </script>'; ?> 

Функция setcookie возвращает true или false, в зависимости от того, был ли cookie установлен успешно. Вы можете попробовать это:

 if(!setcookie("user", $userinfo, $expire)) { echo 'Could not set cookie!'; } 

Если это возвращает false, то Кумар прав. В противном случае должна быть и другая причина.

EDIT setcookie можно вызвать с большим количеством параметров, например:

 setcookie(name,value,expire,path,domain,secure) 

Обратите внимание на значения пути и домена. У меня были проблемы в прошлом, когда две разные страницы не находили файлы cookie друг друга из-за разных путей / доменов.

Я заметил, что вы перенаправляетесь на «../index.php». Попробуйте перенаправить на «index.php» и посмотреть, существуют ли файлы cookie. Если да, то вы должны использовать общую переменную «путь» для установки файлов cookie.

Из http://www.php.net/setcookie о переменной «путь»:

Путь на сервере, на котором будет доступен cookie. Если установлено значение '/', файл cookie будет доступен во всем домене. Если установлено значение '/ foo /', cookie будет доступен только в каталоге / foo / и всех подкаталогах, таких как / foo / bar / домена. Значение по умолчанию – это текущий каталог, в который установлен файл cookie.

Tory, убедитесь, что вы ничего не setcookie прежде чем вы вызываете set setcookie в PHP. Даже пустое пространство. Нет эха. Ничего. Я думаю, что ваши скрипты выводят некоторые вещи перед setcookie, и это нарушает ваш скрипт. Вы видите, что заголовок уже отправил ошибку? Прокомментируйте свою JS, а затем проверьте. Таким образом, вы устанавливаетеcookie

 setcookie(name,value,expire,path,domain,secure); 

Домену требуется значение имени домена в строке, например example.com , необязательно. Защита требует логического значения и не является обязательной. Пропустите эти два и проверьте, установив путь к '/'

Вероятно, потому что $ userinfo – это массив. Он должен быть строкой, чтобы хранить несколько элементов, вам нужно несколько файлов cookie.