#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-файлы. Спасибо за ответ.