PHP – установка файлов cookie и перенаправление

Я пытаюсь установить cookie и перенаправить. Использование Debian GNU / Linux 6.0 (64 бит) с PHP 5.3.3-7 + squeeze19 с Suhosin-Patch (cli) (построено: 17 февраля 2014 10:10:23) и Apache / 2.2.16 (Debian).

По какой-то причине это работает:

<?php $cookie_name = $_GET['a']; $cookie_value = $_GET['b']; setcookie($_GET['a'], $_GET['b'], time() + (86400 * 30), "/"); // 86400 = 1 day ?> 

Но это не так:

 <?php $cookie_name = $_GET['a']; $cookie_value = $_GET['b']; setcookie($_GET['a'], $_GET['b'], time() + (86400 * 30), "/"); // 86400 = 1 day header("Location: http://www.example.com"); exit; ?> 

Даже после нескольких загрузок страниц. Я попытался добавить отчет об ошибках в начало моего кода, но я не вижу никаких ошибок при загрузке страницы или в журнале Apache (/var/log/apache2/error.log):

  error_reporting(E_ALL);ini_set('display_errors','1'); 

По какой-то причине, когда я перенаправляю, даже используя javascript, как показано ниже, cookie не будет добавлять.

 <?php $cookie_name = $_GET['a']; $cookie_value = $_GET['b']; setcookie($_GET['a'], $_GET['b'], time() + (86400 * 30), "/"); // 86400 = 1 day ?> <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <meta http-equiv="refresh" content="1;url=http://www.example.com"> <script type="text/javascript"> window.location.href = "http://www.example.com" </script> <title>Page Redirection</title> </head> <body> If you are not redirected, follow <a href='http://www.example.com'>this link</a>! </body> </html> 

Почему первый пример работает, но не другие?

Solutions Collecting From Web of "PHP – установка файлов cookie и перенаправление"

Использовать, а не перенаправлять

Это также сохраняет браузер в запросе HTTP с обращением в оба конца

 <?php $cookie_name = $_GET['a']; $cookie_value = $_GET['b']; setcookie($_GET['a'], $_GET['b'], time() + (86400 * 30), "/"); // 86400 = 1 day include('/home/user/public_html/index.html'); exit; ?> в <?php $cookie_name = $_GET['a']; $cookie_value = $_GET['b']; setcookie($_GET['a'], $_GET['b'], time() + (86400 * 30), "/"); // 86400 = 1 day include('/home/user/public_html/index.html'); exit; ?> 

Хотя я предпочитаю включать в заголовок перенаправления, ваш файл cookie должен работать. Я тестировал и работает так, как должен.

В своем тесте я перенаправлялся в другой домен. Файл cookie устанавливается в домене, где находится PHP-скрипт.

 setcookie('test', 'test', time() + (86400 * 30), "/"); header("Location: http://www.intel.com"); 

Работает так, как это предполагается:

введите описание изображения здесь

Я тоже получал эту странность, но с перенаправлением js. Тестирование с помощью браузера Chrome на xp.

То, как я решил это, – это сделать настройку cookie с помощью js с помощью document.cookie =

  ?> <script type="text/javascript"> function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays*24*60*60*1000)); var expires = "expires="+d.toUTCString(); document.cookie = cname + "=" + cvalue + "; " + expires; } setCookie("foo","<?php echo $bar; ?>",30); window.location = "<?php echo $destination_page; ?>.php"; </script> <?php 

то проблема исчезла.

Похоже, что перенаправление вызывало неудачу php setcookie по какой-то причине …