簡體   English   中英

HTTP_REFERER將我發送到同一頁面

[英]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中通過回顯實現該功能。

另一種方法是使用面包屑方法,但這將需要一些花哨的工作。

您也可以使用標頭重定向,但請確保未在標頭之前輸出。

參考:


參考文獻:


腳注:

我需要的是用戶在進入該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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM