1

哪些选项可用于将错误消息发送回表单页面?

我有一个表格login.php提交给process.php. process.php处理数据库连接、验证等。如果出现错误,我想将其传递回index.php.

IE:

    } else {
    session_destroy();
    header("Location: /login");
    $error = "Sorry, that user name or password is incorrect. Please try again.";
}

由于这是两个不同的文件,可用于设置和检索错误的最佳选项是什么?$_POST, $_GET, $_SESSION?

4

4 回答 4

4

对于您的具体情况,并使用给出的代码,$_SESSION是您最好的选择。IE:

$_SESSION['login_error_msg'] = "Sorry, that user name or password is incorrect. Please try again.";

然后回到 index.php,您必须以某种方式检查该会话变量,例如:

if( ! empty($_SESSION['login_error_msg']))
{
    //display the message however you want
    unset($_SESSION['login_error_msg'];
}
于 2012-08-15T23:58:39.983 回答
2

我建议使用 $_SESSION。一方面,您不必担心刷新,如果您使用了 $_GET,那么宇宙的渣滓可以共享一个页面并更改查询字符串以弄乱您页面上显示的内容。

如果您有 $_SESSION 并且为您拥有的每个表单创建唯一标识符,则可以显示警告,然后在输出警告后,取消设置 $_SESSION 数组中的值

例如设置它

$_SESSION['uniq_form']['warning'] = 'You got this wrong';

下一页:

echo $_SESSION['uniq_form']['warning'];
unset($_SESSION['uniq_form']['warning']);
于 2012-08-16T00:00:36.057 回答
2

一个简单的解决方案是只使用 $_SESSION。

进程.php:

<?php 
 else {
//session_destroy();

$_SESSION['error'] = "Sorry, that user name or password is incorrect. Please try again.";
header("Location: /login");
exit():
}

登录.php:

<?php if(isset($_SESSION['error'])){
   echo $_SESSION['error'];
   unset( $_SESSION['error'];
}
于 2012-08-16T00:02:19.283 回答
1

我认为 $_SESSION 将是您最好的选择,而不会向您的用户暴露太多信息。

于 2012-08-15T23:58:36.727 回答