如何保存原始的$ _SERVER ['HTTP_REFERER'];在一个刷新几次的页面上?

时间:2014-01-19 03:39:15

标签: php

我有一个页面,我需要获取引用网址,以便我们可以在竞争表单后重定向它们。我的问题是,表单有几个下拉菜单,每次选择(在提交表单之前),引用URL都会不断更改为此页面。

我有......

$_SERVER['HTTP_REFERER']; 

它当然只适用于登陆。

现在,用户从下拉菜单中选择一个选项,页面将刷新另一个下拉菜单以继续选择选项。完成后,我提交的表单需要阅读原始引用URL,而不是表单页面URL。

我需要能够将原始文件放在隐藏字段中并随表单选项一起提交。谢谢你的帮助。如果不清楚我很抱歉,很难解释。

4 个答案:

答案 0 :(得分:0)

当他们转到页面时,将引荐来源保存在会话变量中。

刷新并执行页面逻辑后,重定向到您保存的会话变量。

答案 1 :(得分: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。会话只是针对这类事情,跨页面传递变量并保留状态。

答案 2 :(得分:0)

将第一个请求中的referer存储到会话变量或cookie中。 $_SESSION$_COOKIE超级全局变量可以帮助实现这一目标。

我推荐会话,因为用户无法在本地劫持该值。

答案 3 :(得分:0)

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

这似乎有效。谢谢大家。