php:重定向到referer url但是向querystring添加一些内容

时间:2013-09-01 14:49:46

标签: php

我有一些代码可以从几个不同的页面访问。根据它来自哪个页面以及它发送的变量,它会略有不同。

我想我可以为每个引用页面编写完全新的页面,但实际上不希望这样做,因为功能类似。

如果出现错误,我想重定向回到referer页面。同样,一旦成功,我也想重定向回到referer页面。但是,我想添加一个描述错误的参数,或者让用户知道它是成功区分失败和成功的。

假设有两个referer页面,emailstory.php?id = 231和emailsignup.php一个有问号,另一个没有。我想将用户发送回referer但添加error = 1。我需要一些代码将& error = 1附加到第一个引用但是?error = 1到第二个引用并且对许多变体都很稳健。

PHP

$referer = $_SERVER['HTTP_REFERER'];
$id = $_POST['id'];
$returnpage = $referer."&error=1";
if (!isset($_REQUEST['id'])) {
header("Location:$returnpage");
}

上面会在某些情况下起作用,但只有在已有的情况下?启动查询字符串

有一种简单,万无一失的方法吗?

由于

2 个答案:

答案 0 :(得分:4)

<?php
$returnpage = $_SERVER['HTTP_REFERER'] . '?querystring';

if (!isset($_REQUEST['id'])) 
{
    header("Location:$returnpage");
    exit();
}
嗯,自从第一次'?'之后所有其他'?'将被忽略你可以做我上面所做的...它将完美地工作,它完全是valid

此外,不要忘记在header函数之后退出或终止应用程序,如果您没有明确退出,应用程序仍将继续运行。

但是,如果您仍然坚持使用一个问号,那么下面的代码片段将完成这项工作......

$mark = strpos($_SERVER['HTTP_REFERER'], '?') === false ? '?' : '&';
$returnpage = $_SERVEr['HTTP_REFERER'] . $mark . 'abc=1&def=2&is=t';

答案 1 :(得分:0)

也许您应该检查是否设置了$_POST[id]

$strErrAppend = isset($_POST['id']) ? '&error=1' : '?error=1';

如果&error=1 emailstory.php?id=123 ?error=1 emailsignup.php,则{{1}}附加{{1}}