我有一些代码可以从几个不同的页面访问。根据它来自哪个页面以及它发送的变量,它会略有不同。
我想我可以为每个引用页面编写完全新的页面,但实际上不希望这样做,因为功能类似。
如果出现错误,我想重定向回到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");
}
上面会在某些情况下起作用,但只有在已有的情况下?启动查询字符串
有一种简单,万无一失的方法吗?
由于
答案 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}}