Php 无法使http\u referer保持会话状态
我已经找了几个小时,找不到这个问题的答案 我正在尝试将引用url添加到电子邮件消息(访问者在网站上发送的表单),以便我可以知道访问者是从哪个网站引用的。(正在进行的分析的一部分) 我正在尝试将服务器[“HTTP\u REFERER”]设置为这样的会话Php 无法使http\u referer保持会话状态,php,wordpress,session-variables,http-referer,Php,Wordpress,Session Variables,Http Referer,我已经找了几个小时,找不到这个问题的答案 我正在尝试将引用url添加到电子邮件消息(访问者在网站上发送的表单),以便我可以知道访问者是从哪个网站引用的。(正在进行的分析的一部分) 我正在尝试将服务器[“HTTP\u REFERER”]设置为这样的会话 if(!isset($_SESSION["inbound"])) { $_SESSION["inbound"] = $_SERVER["HTTP_REFERER"]; } 但每次加载另一个页面时,会话都会不断更改。我猜是把枪放进去了!
if(!isset($_SESSION["inbound"])) {
$_SESSION["inbound"] = $_SERVER["HTTP_REFERER"];
}
但每次加载另一个页面时,会话都会不断更改。我猜是把枪放进去了!在此之前,isset将告诉它已经有一个会话,并且不再尝试添加它
我也尝试过这种方式(以及其他方式的组合):
我在WordPress上这么做,但我认为这不应该成为一个问题。我以前在Wordpress中使用过多次会话,没有任何问题
非常感谢您的任何建议或帮助!
谢谢
Eoin
更新:您已经这样尝试过了:
function get_ref_session() {
if(!isset($_SESSION["inbound"])) {
$the_referer = $_SERVER["HTTP_REFERER"];
$_SESSION["inbound"] = $the_referer;
}
}
add_action( 'wp_head', 'get_ref_session' );
这样也没有乐趣:(
在plugin和functions.php中尝试了这一点,没有乐趣。(在顶部)
Wordpress默认情况下不使用PHP会话。它直接设置Cookie来管理自己的会话。 在发送任何标题信息之前,您需要包括
会话_start();
。否则将不会保存任何会话数据
经过一番更深入的挖掘,发现它对阻止会话正常工作的页面进行了缓存 当登录到wordpress会话时工作正常,但当注销(所有访问者都将是)时,它们就不工作了
我想我必须考虑用cookies来做这件事。使用$\u服务器[“HTTP\u REFERER”]时也请小心,它并不总是可用的,用户可以更改它。我在顶部有session\u start(),但没有乐趣:(是的,http_referer不是100%,但它会完成这项工作。在顶部?你是说在函数的顶部,在init hook期间运行,就像OP建议的那样..对吗?只是为了添加到上面..我有另一个会话,它从$_GET[''获取其值),它在同一个站点上运行得很好。我100%确定,但是http\u referer one,它似乎更像是if(isset)的问题。它就像被忽略了一样。您正在检查$\u会话[“inbound”],但设置$\u会话[“origURL”]。也许就是这样?在您的第一个代码示例中,您将键
inbound
和origURL
混合在一起。请再次确认这不是您的问题。(我发现在类似的情况下使用常量很有帮助。)
function get_ref_session() {
if(!isset($_SESSION["inbound"])) {
$the_referer = $_SERVER["HTTP_REFERER"];
$_SESSION["inbound"] = $the_referer;
}
}
add_action( 'wp_head', 'get_ref_session' );
function register_session(){
if( !session_id() )
session_start();
}
add_action('init','register_session');
function register_session(){
if( !session_id() )
session_start();
}
add_action('init','register_session');