[英]HTTP_REFERER sends me to the same page
我正在使用php,並且嘗試向我的聯系表單添加一項功能,該功能向我發送了聯系頁面之前的頁面。 我在表單代碼上添加了以下代碼行:
$httpReferer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
$e_body = "Provenance : $httpReferer ";
這可以正常工作,並向我顯示了一個鏈接,但是問題是該鏈接是同一聯系頁面( http://...contact.php )。 我需要的是用戶在進入該contact.php頁面之前訪問的頁面。
有人知道為什么會這樣嗎? 有沒有辦法退后兩頁而不是一頁?
謝謝 :)
擁有后退按鈕的一種方法是向表單添加隱藏的輸入(查看您在聯系人頁面中正在使用的內容),並使用$_SERVER['REQUEST_URI']
作為值並為其分配會話數組和使用會話。 也可以使用Cookies,但是在示例中我使用了會話。
首先開始會議:
<?php
session_start();
// you can uncomment it to destroy previously set sessions
// session_destroy();
$_SESSION['back'] = $_SERVER['REQUEST_URI'];
?>
<form action="page2.php" method="post">
<input type="hidden" name="goback" value="<?php echo $_SERVER['REQUEST_URI'] ?>">
...
</form>
然后在第二頁上: page2.php
<?php
session_start();
// Your POST information for your contact code goes here
echo "<a href=\"$_SESSION[back]\">Go back</a>";
?>
或者,要進行完整的http
調用:
$link = "http://" . $_SERVER['SERVER_NAME'].$_SESSION['back'];
echo "<a href=\"$link\">Go back</a>";
旁注:正如我在評論中所述,
我知道要返回2頁的唯一方法是使用javascript:window.history.go(-2)
,您可以在PHP中通過回顯實現該功能。
另一種方法是使用面包屑方法,但這將需要一些花哨的工作。
$_SERVER['HTTP_REFERER']
並不完全可靠。 您也可以使用標頭重定向,但請確保未在標頭之前輸出。
參考:
參考文獻:
腳注:
我需要的是用戶在進入該contact.php頁面之前訪問的頁面。
如果沒有該頁面的引薦來源,那么用戶將無法返回,因為除非他們使用瀏覽器的后退箭頭按鈕,否則無法返回。
如果沒有引薦來源,則可以使用javascript:window.history.go(-1)
。
如果您確實要使用$_SERVER['HTTP_REFERER']
(請參閱其他注釋),則在加載聯系表單時將其存儲在會話中,以便在提交表單時可以使用它。
// Store the referring URL when loading the contact form.
$_SESSION['ref'] = $_SERVER['HTTP_REFERER']
// Redirect user back to referring URL when submitting the form.
header('Location: ' . $_SESSION['ref']);
unset($_SESSION['ref']);
die;
希望這可以幫助。
header('Location: '.$_SERVER['HTTP_REFERER']);
die;
希望對您有幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.