有哪些选项可以将错误消息发送回表单页面?
我在login.php
上有一个表单,它提交给process.php
。 process.php
处理数据库连接,验证等。如果有错误,我想将其传递回index.php
。
即:
} else {
session_destroy();
header("Location: /login");
$error = "Sorry, that user name or password is incorrect. Please try again.";
}
由于这些是两个不同的文件,设置和检索错误的最佳选项有哪些? $_POST
,$_GET
,$_SESSION
?
答案 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是您最好的选择,而不会向您的用户泄露太多信息。