session_start and $_SERVER variable in Wordpress


session_start and $_SERVER variable in Wordpress

我有一个客户,希望url推荐人可以发送联系电子邮件。这已经起作用了,但一夜之间突然停止了,没有任何线索是什么问题。

遗憾的是,这个平台是Wordpress。

在header.php中:

if(!session_id()){
 //session_destroy();
 session_start();
}
if(!isset($_SESSION['referer'])){
 if(isset($_SERVER['HTTP_REFERER'])&&!empty($_SERVER['HTTP_REFERER'])){
  $ref=strtolower($_SERVER['HTTP_REFERER']);
  if(strpos($ref,'facebook')!==false){$_SESSION['referer']="Facebook";$_SESSION['refererURL']=$ref;}
  elseif(strpos($ref,'google')!==false){$_SESSION['referer']="Google";$_SESSION['refererURL']=$ref;}
  else{$_SESSION['referer']="Web";$_SESSION['refererURL']=$ref;}
 }
}

,这是在我的contact-us。php:

$referer=trim($_SESSION['referer']);
$refererURL=trim($_SESSION['refererURL']);

根据代码,我应该得到三个不同的引用,这取决于用户来自哪里,但我不断得到"Web"aka。未指定引用对象

我做错了什么?

和澄清:

  • session_start()未运行之前header.php,
  • add_action( 'init', 'session_start' );不工作,
  • 没有错误产生,它只是保存错误的引用,
  • 这个确切的代码已经工作了1天前,现在它没有,据我所知,没有改变!
编辑:

我已经将所有内容移动到$_COOKIE变量,并从xmlrpc.php $_COOKIE = array();中删除了条目,并且它正在工作。当涉及到$_SESSION时,wordpress似乎有一些奇怪的逻辑。

检查服务器配置。这可能会发生,你的php版本在服务器可能已经更新没有通知,导致关闭全局变量。

你可以通过上传一个PHP文件来检查,其中包含以下代码

    <?php
     phpinfo();
     ?>

编辑:请参考以下链接http://php.net/manual/en/reserved.variables.php

http://php.net/manual/en/faq.using.php faq.register-globals