Вывод переменной getcookie в PHP без обновления браузера - PullRequest
2 голосов
/ 01 июля 2011

Я использую следующий код для вывода блока содержимого без файла cookie и другого числа, если файл cookie был установлен. Проблема в том, что переменная getcookie не работает, пока страница не будет обновлена ​​или пользователь не перейдет на следующую страницу.

Я рад использовать перенаправление заголовка, но не уверен, куда поместить его в этом коде (если у кого-то нет лучшего решения для самого кода):

if (is_page(817)) {
    setcookie("phonecookie", 1, time()+3600, COOKIEPATH, COOKIE_DOMAIN);
}
if ($_COOKIE["phonecookie"] =="") {
    echo "no cookie here";
} else { 
    echo "cookie stored!"; 
}

Кроме того, код выше устанавливает cookie, если посетитель попадает на определенную страницу в WordPress.

Есть ли другой способ сделать это через строку запроса, например, example.com/?src=affiliate

Ответы [ 2 ]

0 голосов
/ 01 июля 2011

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

if ((is_page(817) && (!isset($_COOKIE["phonecookie"]) {
     setcookie("phonecookie", 1, time()+3600, COOKIEPATH, COOKIE_DOMAIN); 
     //Your redirect code here
     header("Location:yoururl);
} elseif (isset($_COOKIE["phonecookie"])) {
     echo "cookie stored!";  
} else {
     echo "no cookie here or page is not 817";
}
0 голосов
/ 01 июля 2011

Использование заголовка для перенаправления обратно на ту же страницу:

if (is_page(817) && empty($_GET['redirect'])) {
    setcookie("phonecookie", 1, time()+3600, COOKIEPATH, COOKIE_DOMAIN);
    header("Location: http://url-for-this-page.com/path/?query=thequery&redirect=1"); 
    exit(0);
}

redirect=1 добавлено в URL, чтобы остановить бесконечный цикл, если у пользователя отключены файлы cookie.

...