无法让http_referer留在会话中

时间:2014-07-16 23:48:18

标签: php wordpress session-variables http-referer

我一直在寻找几个小时,但却无法找到答案。

我正在尝试将引用网址添加到电子邮件中(访问者在网站上发送的表单),以便我知道访问者所引用的网站。 (正在进行的分析的一部分)。

我正在尝试将SERVER [" HTTP_REFERER"]设置为这样的会话。

if(!isset($_SESSION["inbound"])) { 
    $_SESSION["inbound"] = $_SERVER["HTTP_REFERER"];
 }

但每次加载另一个页面时,会话都会不断变化。我推测放!在isset之前会告诉它已经有一个会话而不是再尝试添加它。

我也尝试过这种方式(以及其他方式的组合):

if(isset($_SESSION["inbound"])) { 
    // do nothing 
} else { 
    $_SESSION["inbound"] = $_SERVER["HTTP_REFERER"]; 
}

我在WordPress中这样做,但我不认为这应该是一个问题。我之前在Wordpress中使用过很多次没有任何问题。

非常感谢任何建议或帮助! 谢谢 约恩

更新:尝试过这样:

function get_ref_session() {
    if(!isset($_SESSION["inbound"])) { 
        $the_referer = $_SERVER["HTTP_REFERER"]; 
        $_SESSION["inbound"] = $the_referer; 
    }
}
add_action( 'wp_head', 'get_ref_session' );

这种方式也没有喜悦:(

在插件和functions.php中试过这个,没有快乐。 (在顶部)

function register_session(){
    if( !session_id() )
        session_start();
}
add_action('init','register_session');

2 个答案:

答案 0 :(得分:2)

Wordpress默认不使用PHP会话。它直接设置cookie来管理自己的会话。 在发送任何标头信息之前,您需要包含session_start();。否则,不会保存会话数据。

How to use session in wordpress in plugin development

function register_session(){
    if( !session_id() )
        session_start();
}
add_action('init','register_session');

答案 1 :(得分:0)

经过大量挖掘,结果表明它的页面缓存阻止会话正常工作..

登录wordpress会话时工作正常,但是当注销时(所有访问者都会),他们无法正常工作。

想想我要用cookie代替这样做。