0

我有一个客户希望 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;}
 }
}

这是我的contact-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

4

1 回答 1

1

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

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

    <?php
     phpinfo();
     ?>

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

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

于 2013-01-15T12:48:44.887 回答