Установка файла cookie перед перенаправлением

#php #cookies #redirect #header

#php #файлы cookie #перенаправление #заголовок

Вопрос:

Я пытаюсь установить cookie непосредственно перед перенаправлением заголовка, но это не работает. Я читал, что установка cookie после строки перенаправления заголовка должна решить проблему, но мне не повезло. Аналогично, в сообщении здесь ранее предлагалось, что если вы используете «человеческий URL» при перенаправлении местоположения, вам следует использовать ‘/’ в параметре path файла cookie. Это также было сделано безуспешно.

 header("Location: $url" . $params);
setcookie('cartstlang', 'lang', 0, '/', '', FALSE, FALSE);
setcookie('cartstdb', 'db', 0, '/', '', FALSE, FALSE);
  

Также обратите внимание, я протестировал это, закомментировав перенаправление заголовка, а затем щелкнув по ссылке для изменения страниц. Затем файлы cookie нормально отображались в var_dump().

Я разрабатываю на XAMPP с PHP 5.3 . Я тестировал как в IE 8, так и в Firefox 4.

Любая помощь была бы отличной. Спасибо.

Комментарии:

1. следующая строка должна быть после setcookie

2. Я тоже слышал обратное. В любом случае, я пробовал оба заголовка до и после вызова setcookie.

3. вот одно утверждение о том, что порядок должен быть header -> setcookie: php.net/manual/en/function . setcookie.php#96251

Ответ №1:

setcookie Код должен быть перед header кодом и убедитесь, что вы делаете exit() после, чтобы остановить любой вывод.

Также вы уверены, что он отправляется в тот же домен (есть разница между http://site.com и http://www.site.com )? Попробуйте установить для параметра domain значение .site.com в setcookie , чтобы к нему можно было получить доступ во всех поддоменах.

Комментарии:

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

2. Ну, тогда вам нужно будет продолжить отладку. Убедитесь, что cookie установлен в вашем браузере перед перенаправлением, затем перейдите на страницу, на которую он вернет вас обратно, и проверьте, есть ли cookie.

3. Я проверил, что файл cookie установлен без перенаправления, и я также установил, что файл cookie находится не на той странице, где он мне требуется.

Ответ №2:

попробуйте это

 $value = 'something from somewhere';

setcookie("TestCookie", $value);




echo $_COOKIE["TestCookie"];
echo $HTTP_COOKIE_VARS["TestCookie"];

// Another way to debug/test is to view all cookies
print_r($_COOKIE);
  

и отправьте ответ, что вы видите. Также убедитесь, что cookies включены.

Комментарии:

1. Обратите внимание: Неопределенный индекс: TestCookie в ….waiting.php в строке 3 обратите внимание: Неопределенная переменная: HTTP_COOKIE_VARS вводится … waiting.php в строке 3. Файлы cookie включены; они устанавливаются нормально без попытки повторного ввода заголовка.

2. Игнорируйте вышесказанное, забыл обновить. что-то откуда-то взято Обратите внимание: Неопределенная переменная: HTTP_COOKIE_VARS в C:xampphtdocsjoomla_and_vmwaiting.php в строке 2 определенно установлены cookie-файлы. Спасибо за ответ.