2

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

我想我可以为每个引用页面编写全新的页面,但由于功能相似,我真的不想这样做。

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

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

php

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

以上在某些情况下会起作用,但前提是已经存在 ? 启动查询字符串

有没有一种简单、万无一失的方法来做到这一点?

谢谢

4

2 回答 2

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

if (!isset($_REQUEST['id'])) 
{
    header("Location:$returnpage");
    exit();
}

好吧,自从第一个'?所有其他'?将被忽略你可以做我上面所做的......它会完美地工作并且它是完全有效的。

此外,不要忘记退出或终止应用程序,因为在该header功能之后,如果您不明确退出,应用程序仍将继续运行。

但是,如果您仍然坚持要打一个问号,那么下面的代码片段就可以了……

$mark = strpos($_SERVER['HTTP_REFERER'], '?') === false ? '?' : '&';
$returnpage = $_SERVEr['HTTP_REFERER'] . $mark . 'abc=1&def=2&is=t';
于 2013-09-01T14:56:11.140 回答
0

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

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

这应该附加&error=1emailstory.php?id=123?error=1emailsignup.php

于 2013-09-01T14:57:34.397 回答