是否可以发送带有header('Location:);
的数组,以便在重定向后回显该数组?我有一个注册表格,一旦出错,它会重定向到主页,一旦成功,它就会重定向到会员页面。如果我能做一些类似$arr['error_message'] = 'Invalid Password';
的事情,那么在重定向if (isset($arr['error_message'])) { echo $arr['error_message']; }
上
这有望实现不需要额外的URL参数(&error=无效%20Login)。我注意到$_SESSION
是一个选项,但如果用户打开了多个选项卡怎么办?还是我一直在使用更多的URL参数?
您可以使用$_GET来完成此操作,如
if($success)
{
$msg="success";
header("Location: member.php?msg=$msg");
}
else
{
$msg="Invalid Password";
header("Location: home.php?msg=$msg");
}
并且像一样在当前页面中检索
if(isset($_GET['msg']))
{
echo $_GET['msg'];
}
我想向您推荐一些解决方案。
解决方案1
获取Param(事实上你说不想)我认为发送GET Param没有任何问题,因为它不包含任何敏感数据。例如,您可以为此使用一些内部CODE。例如:您定义了一些代码。
$code = 1; // This should be dynamic like,
// 1 => When Password wrong,
// 2 => When login ID not exists,
// 3 => when unknown error occurred
header('Location: error.php?err=' . $code);
所以在error.php中,你可以检查一下。
$errorCode = $_GET['err'];
switch($errorCode)
{
case 1;
{
echo "Password wrong";
break;
}
case 2;
{
echo "login ID not exists";
break;
}
// Add custom messages as you wish
}
解决方案2
正在使用会话。我认为如果你有多个选项卡也没关系。在您的密码检查代码中,您可以在重定向之前启动会话。
$_SESSION['ERROR_MESSAGE'] = "Whatever you want";
然后在error.php(重定向页面)中,您可以检查
if(isset($_SESSION['ERROR_MESSAGE']))
{
echo $_SESSION['ERROR_MESSAGE'];
unset($_SESSION['ERROR_MESSAGE']);
}
解决方案3
您可以通过POST操作生成隐藏表单,而不是PHP重定向,并且可以在执行时为其分配相关的错误消息
<form name="frmError" id="frmError" method="POST" action="error.php">
<input type="hidden" name="error" value="<?php echo $errorMessage; ?>" />
</form>
并编写一个javascript函数来POST您的表单。
<script type="text/javascript">
function submitform()
{
document.frmError.submit();
}
</script>
然后将您的身体标签修改为以下
<body <?php if(isset($errorMessage)) {?> onload="submitform();" <?php } ?> >
希望这能帮助你做出决定。
Session是一种常见的解决方案。尽管用户可以打开多个选项卡,但您希望用户同时注册一个帐户。所以它不会引起问题