如何从PHP设置Cookie并在不刷新的情况下获取

时间:2014-11-19 作者:user1147145

我知道当使用setcookie() 函数创建标题,刷新后将在中可用$_COOKIES, 但是我需要一种机制来在这个页面中设置cookie而不重定向,而是在浏览器cookie中。如果做这样的事情

setcookie(\'my_cookie\',\'tmp_val\');
$_COOKIE[\'my_cookie\'] = \'tmp_val;
当您立即设置时,这种情况很好,但当您在PHP中每次刷新时设置cookie时,这种情况很好,但在浏览器中cookie仍然很旧。我试过这样的

add_action(\'parse_request\', function($tmp){
            setcookie(\'my_cookie\',\'tmp_val\');
            wp_safe_redirect(get_permalink());
            exit();
        });
但我有问题。请帮我找到一个好的解决方案。

1 个回复
SO网友:TomC

您需要使用类似于以下内容的“init”挂钩:

add_action( \'init\', \'your_function\');
function your_function() {
    setcookie(\'my_cookie\',\'tmp_val\');
    wp_redirect( get_permalink() ); 
        exit; 
    } 
}
您应该在其中添加一个条件“if”语句,以防止它在每个页面上重定向!

例如:。

   add_action( \'init\', \'your_function\');
    function your_function() {
        setcookie(\'my_cookie\',\'tmp_val\');
        if ($my_cookie == "???") { 
            wp_redirect( \'go here\' ); 
            exit; 
            } else {
            wp_redirect( \'go somewhere else\' ); 
            exit;
        } 
    }
还要考虑“template\\u redirect”挂钩。

结束

相关推荐

Cookies in template

我需要根据cookies只显示一次页面的某些部分。主要问题是我只能在插件中设置cookie,挂起init操作。我已经读了20页的谷歌,这个网站,问了2个论坛,但我仍然有这个问题。任何帮助都将不胜感激!