2017-07-14 56 views
0

<html>標籤之前,我有以下代碼:我如何防止HTTP_REFERER從<code>header.php</code>文件我的WordPress網站的被覆蓋

<?php 

session_start(); 

$_SESSION['refererurl'] = $_SERVER['HTTP_REFERER']; 

?> 

爲了測試上面的代碼,我把下面的代碼在前面-page.php文件(和它的作品):

<?php 
    echo $_SESSION['refererurl']; 
?> 

,因爲我想跟蹤引薦網址,導致訪問者在我的網站從外部網站(用於跟蹤目標的目的)我這樣做。問題是$_SERVER['HTTP_REFERER']會在頁面加載時重置,因此當訪問者首次登錄我的網站時,這些信息非常有用,但只要訪問者進一步瀏覽我的網站,它就會被覆蓋。

只要訪問者在我的網站上,當訪問者首次從外部網站到達我的網站時,是否有任何方法可以存儲$_SERVER['HTTP_REFERER']的值?

我在這個級別上對PHP很陌生,所以請原諒我缺乏經驗。我將$_SERVER['HTTP_REFERER']存儲在一個會話中,只是因爲這是我基於會話和cookie的快速研究而收集的結果。

+0

檢查引薦來源網站是否包含您的域名,如果有,請忽略它? –

+0

我最終需要將這些信息發佈到表單中,所以我需要在會話期間記錄初始值。 – LCW

回答

2

很簡單 - 只設置它如果它尚未設置。

if(!isset($_SESSION['refererurl'])) { 
    $_SESSION['refererurl'] = $_SERVER['HTTP_REFERER']; 
} 
+0

您可能還希望在$ _SERVER ['HTTP_REFERER']上使用'parse_url'來檢測並忽略來自您自己站點域的引用。 – ceejayoz

0

您可以檢查是否$_SESSION['refererurl']已經設置,只是不重寫:-)

if(!isset($_SESSION['refererurl'])) { 
    $_SESSION['refererurl'] = $_SERVER['HTTP_REFERER']; 
} 

您可能還需要檢查,如果引用者是空嘗試指派前:

if(isset($_SERVER['HTTP_REFERER']) && !isset($_SESSION['refererurl'])) { 
    $_SESSION['refererurl'] = $_SERVER['HTTP_REFERER']; 
} 
相關問題