2012-08-15 54 views
0

有哪些选项可用于将错误消息发送回表单页面?将错误消息传递到其他页面

我有一个表格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

+0

会议可能是一个不错的选择,它不会弄乱你的URL。只要确保在读出后将其删除即可。 – kapa 2012-08-15 23:57:58

+0

会话是一个可怕的解决方案 - 为什么不在脚本中显示消息,该消息一直在处理数据? – zerkms 2012-08-15 23:59:30

+0

@zerkms这将在很大程度上取决于他的架构。根据给出的数据和问题,会话是合乎逻辑的选择 – orourkek 2012-08-16 00:00:42

回答

1

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

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

然后回来的index.php你必须以某种方式检查会话变量,e.g:

if(! empty($_SESSION['login_error_msg'])) 
{ 
    //display the message however you want 
    unset($_SESSION['login_error_msg']; 
} 
1

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

2

我建议使用$ _SESSION。首先,你不必担心刷新问题,如果你使用$ _GET,并且宇宙的渣滓可以共享一个页面,并且改变查询字符串与页面上显示的内容混淆。

如果有$ _SESSION和如果创建一个唯一的标识符的每个形成你有,可以显示一个警告,然后警告后,被输出时,未设置该$ _SESSION数组中值

例如它设置

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

下一页:

echo $_SESSION['uniq_form']['warning']; 
unset($_SESSION['uniq_form']['warning']); 
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']; 
} 
相关问题