2014-01-19 70 views
2

我有一個頁面,我需要獲取引薦網址,以便在競爭表單後將其重新導向回去。我的問題是,表單有幾個下拉菜單,每次進行選擇(在提交表單之前),引用URL都會更改爲此頁面。

我....

$_SERVER['HTTP_REFERER']; 

而且它僅適用於課程的降落。

現在用戶從下拉菜單中選擇一個選項,頁面用另一個下拉菜單刷新以繼續選擇選項。完成後,我提交的表單需要讀取原始引薦網址,而不是表單網頁網址。

我需要能夠將原件放在隱藏字段中並與表單選項一起提交。謝謝你的幫助。如果不清楚,我很抱歉,這很難解釋。

+0

然後把它放在一個隱藏的領域,正如你所建議的,雖然認識到精明的用戶可以破解價值。相反,保持會話變量服務器端可能會更好。 –

回答

0

當他們轉到頁面時,將推薦人保存在會話變量中。

刷新並執行頁面邏輯後,重定向到您保存的會話變量。

+0

非常感謝! – Mike

+0

:)沒問題。祝你有個好的一天。 – ZombieBunnies

+0

嗯,我試過了,它不起作用:( - 一旦表單被使用,引用者就是空的。不知道爲什麼。它一直在重讀應用/覆蓋我認爲的會話。 – Mike

0

如果你堅持用表單和隱藏輸入來做,那很容易。

<input type="hidden" name="referrer" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" /> 

你也可以用會話做到這一點,但是,假設你使用session_start()

session_start();// At the very top of your page. Literally THE TOP. 

// Set our session variable only if it is not currently set. 
if (!isset($_SESSION['referrer'])) { 
    $_SESSION['referrer'] = $_SERVER['HTTP_REFERER']; 
} 

關於會議的更多信息,請參閱this。會話只是爲了這樣的事情,跨頁面變量和保存狀態。

+0

感謝您的意見和幫助。看來每次使用表單拖放菜單時,會話都會一直處於被覆蓋的狀態。當提交時,原始推薦人會話消失。 – Mike

+0

「下拉菜單」是做什麼的?將表單發佈到當前頁面或重定向到新頁面? – jboneca

+0

@Mike也可以用一些代碼更新你的帖子,這樣我們就可以看到你在做什麼。 – jboneca

0

將第一個請求中的referer存儲到會話變量或cookie中。 $_SESSION$_COOKIE超級全局可以幫助實現這一點。

我推薦會話,因爲用戶將無法在本地劫持該值。

+0

太好了,非常感謝。我很感激幫助。 – Mike

0
if($_SESSION['GOBACK']=='') 
{ 
    $_SESSION['GOBACK'] = $_SERVER['HTTP_REFERER']; 
} 

這似乎工作。感謝大家。

相關問題