在没有浏览器刷新的情况下在PHP中输出getcookie变量

时间:2011-07-01 12:13:46

标签: php cookies refresh setcookie

我使用以下代码输出没有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!"; 
}

此外,如果访问者登陆WordPress中的特定页面,则上面的代码会设置cookie。

是否有其他方法可以通过查询字符串执行此操作,例如example.com/?src=affiliate

2 个答案:

答案 0 :(得分:0)

使用标题重定向回同一页面:

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);
}
如果用户禁用了Cookie,

redirect=1已添加到网址以停止无限循环。

答案 1 :(得分:0)

试试这个

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";
}