0

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']);

コードによると、ユーザーの出身地に応じて3つの異なるリファラーを取得する必要がありますが、常に「Web」(別名)を取得しています。リファラーが指定されていません。

私は何が間違っているのですか?

そして明確にするために:

  • session_start()header.phpの前に実行されていません、
  • add_action( 'init', 'session_start' );動作しません、
  • エラーは発生せず、間違ったリファラーを保存するだけです。
  • この正確なコードは1日前に機能していましたが、現在は機能していません。私が知る限り、変更は加えられていません。

編集: 私はすべてを$_COOKIE変数に移動し、xmlrpc.phpからエントリを削除しましたが、機能$_COOKIE = array();しています。ワードプレスには、ということになると奇妙な論理があるよう$_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 に答える