将错误消息传递到另一个页面

时间:2012-08-15 23:54:20

标签: php forms

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

我在login.php上有一个表单,它提交给process.phpprocess.php处理数据库连接,验证等。如果有错误,我想将其传递回index.php

即:

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

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

4 个答案:

答案 0 :(得分:2)

对于您的具体情况,并根据给出的代码,$_SESSION是您最好的选择。即:

$_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'];
}

答案 1 :(得分:2)

我建议使用$ _SESSION。首先,您不必担心刷新,如果您使用$ _GET,并且Universe的浮渣可以共享页面并更改查询字符串以混淆页面上显示的内容。

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

e.g。设置

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

下一页:

echo $_SESSION['uniq_form']['warning'];
unset($_SESSION['uniq_form']['warning']);

答案 2 :(得分:2)

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

process.php:

<?php 
 else {
//session_destroy();

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

的login.php:

<?php if(isset($_SESSION['error'])){
   echo $_SESSION['error'];
   unset( $_SESSION['error'];
}

答案 3 :(得分:1)

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