Wordpress中的session_start和$ _SERVER变量

时间:2013-01-15 12:38:51

标签: php wordpress

我有一个客户希望url referer能够通过联系电子邮件发送。这已经成功并突然停了一夜,没有线索是什么问题。

可悲的是,平台是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;}
 }
}

这是我的联系方式-us.php:

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

根据代码,我应该根据用户的来源获得三个不同的引用,但我不断得到“Web”。没有指定参考者。

我做错了什么?

并澄清:

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

修改 我已将所有内容移至$_COOKIE变量并从xmlrpc.php $_COOKIE = array();中删除了条目,并且它正在运行。看来wordpress在$_SESSION时有一些奇怪的逻辑。

1 个答案:

答案 0 :(得分:1)

检查服务器配置。可能会发生服务器上的php版本在没有暗示的情况下更新,这会导致关闭全局变量。

您可以通过简单地上传包含以下代码的php文件来检查

    <?php
     phpinfo();
     ?>

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

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