是否可以发送一个header('Location:);
的数组,以便重定向后可以回显数组?我有一个注册表单,如果出错,它会重定向到主页,成功后会重定向到成员页面。如果我可以执行$arr['error_message'] = 'Invalid Password';
之类的操作,那么请重定向if (isset($arr['error_message'])) { echo $arr['error_message']; }
这有望实现不需要额外的URL参数(& error = Invalid%20Login)。我注意到$_SESSION
是一个选项,但是如果用户打开了多个标签怎么办?还是我坚持使用更多的URL参数?
答案 0 :(得分:3)
您可以使用$ _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 :(得分:3)
我想建议你一些解决方案。
解决方案1
GET 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 } ?> >
希望这有助于您做出决定。
答案 2 :(得分:0)
会话是一种常见的解决方案。虽然用户可以打开多个选项卡,但您希望用户同时注册一个帐户。所以它不会引起问题