2013-09-24 56 views
1

我正在尋找將用戶從他們來的地方發回兩個(或更多)頁面。目前爲止有效的是推薦人的PHP Referrer(遞歸)

<strong> 
    <a href="javascript:history.go(-3)"> 
     Click here to go back to the view 
    </a> 
</strong> 

但是,被調用的[history]頁面不刷新以顯示更改。

所以我有引薦referrer的想法。 PHP給我$_SERVER['REFERER']使用,這是可以的,但只能達到一個級別。如何獲得$_SERVER['REFERER']的推薦人(推薦人...)?

+0

你是什麼意思_「頁面不刷新」_?當瀏覽器瀏覽器瀏覽歷史記錄9/10時,這些頁面將來自瀏覽器緩存,所以如果你的意思是,在第1頁上,用戶可以更改內容,第2頁感謝他們輸入,第3頁將它們帶到總覽,這是包含page1鏈接的頁面,'history.go(-3)'確實不起作用。你只需要再次將它們重定向到page1,強制一個新的請求 –

+0

編輯,使其不那麼模糊 – Benda

+0

好吧,總是會話,跟蹤客戶端_「運動」_在您的網站上。所以如果他/她需要重定向3個推薦人之前,您可以從會話中獲得該信息... –

回答

0

JS。沒有PHP

修改您現有的代碼。

<strong> 
     <a href="javascript:window.name='autoLoad';history.go(-3)"> 
      Click here to go back to the view 
     </a> 
    </code> 

現在,將此JS添加到頁面,在那裏您被重定向。說test.html當你點擊history.go(-3)

function autoLoad(){ 
    if (window.name=='autoLoad') { 
    location.reload(); 
    window.name=''; 
    } 
} 

,並在body標籤添加這個

<body onload="autoLoad()"> 
+1

感謝您的支持。它工作正常,達到我想要的。我想投票,但是我抱怨說我沒有足夠的聲望點。再次感謝 – Benda

1

據我所知,你不能在PHP中這樣做。簡單的答案是否定的,因爲PHP是服務器端,並且只獲取當前的引用,而Javascript是客戶端大小,在瀏覽器上運行,實際上有2個或更多的歷史步驟。

考慮重新思考爲什麼要讓這種情況發生。你永遠不能保證2步回推薦人(甚至最後一個)仍然在你的網站。

0

在服務器變量$_SERVER['REFERER']只是最後一個referrer。如果您想使用之前的版本,則必須將它們保存到會話中。問題在於你無法找出哪個瀏覽器標籤初始化了請求 - 所以你的歷史記錄會混合到所有標籤。

解決方案將使用JS強制瀏覽器重新加載頁面。

0

你可以做這樣的事情,或者如果你喜歡他們更多使用cookie,但你不這不需要PHP。

<input type="hidden" id="reload" value="0"> 

<script type="text/javascript"> 
    window.onload = function(){ 
    var el = document.getElementById("reload"); 

    if(el.value != "0")   
    { 
     window.location.reload(); 
    } 

    el.value="1"; 
    } 
</script>