2013-01-15 47 views
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;} 
} 
} 

,這是我接觸us.php:

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

根據代碼,我應該得到取決於三個不同的參照網址用戶來自哪裏,但我不斷地獲得「Web」。沒有指定引用者。

我在做什麼錯?

,並澄清:

  • session_start()的header.php之前尚未運行,
  • add_action('init', 'session_start');不起作用,生產
  • 沒有任何錯誤,它只是保存了錯誤的引用者,
  • 這個確切的代碼已經工作了1天前,現在它不,並且據我所知,沒有任何更改!

編輯: 我已經從xmlrpc.php $_COOKIE = array();一切$_COOKIE變量和刪除條目,它的工作。看起來wordpress在涉及到$_SESSION時有一些奇怪的邏輯。

+0

做到這一點:'回聲$ refererURL'來驗證引用者確實不是'web' –

回答

1

檢查服務器配置。可能會發生這樣的情況:服務器上的php版本可能沒有更新而導致關閉全局變量的暗示更新。

可以檢查只需在其上傳的PHP文件與下面的代碼

<?php 
    phpinfo(); 
    ?> 

編輯: 請參考以下鏈接 http://php.net/manual/en/reserved.variables.php

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

+1

如果我理解正確,使用全局變量意味着我可以通過'$'訪問'$ _SESSION'變量,例如:'$ ''referer''可以訪問_SESSION ['referer']'。由於我沒有以這種方式訪問​​'$ _SESSION'變量,我認爲這是無關緊要的。或者我錯了?我只是檢查,全局變量被關閉。 –

+0

對不起我的錯誤 它不是全局變量它是 「register_globals」確保它已打開 –

+0

關閉。否則會出現一些不可預測的結果和意外錯誤。 –

相關問題