在PHP中传递错误消息
我在我的网站上有一个登录表单,用于检查提交的用户名/密码。 如果没有匹配,则将用户发送回登录页面并显示相应的错误消息。 这个重定向的呼叫是这样的:
header("location:../login.php?error_message=$error_message");
这工作正常,但它在浏览器的地址栏中显得杂乱无章(尤其是描述性错误消息)。 有没有办法做到这一点,而不使用$ _GET变量自动重定向? 我曾考虑过使用$ _SESSION变量,但这看起来并不是最好的编码习惯。
谢谢阅读。
如何有一个更简单的GET变量?
// something.php
header ("Location: foo.php?err=1");
然后在处理错误的页面中:
// foo.php
$errors = array (
1 => "Hello, world!",
2 => "My house is on fire!"
);
$error_id = isset($_GET['err']) ? (int)$_GET['err'] : 0;
if ($error_id != 0 && in_array($error_id, $errors)) {
echo $errors[$error_id];
}
希望这可以帮助。
如果您不想使用会话,则可以使用错误代码:
header('Location: ../login.php?error=' . urlencode($error_code));
然后,在login.php
里面:
if (isset($_GET['error'])) {
switch ($_GET['error']) {
case 123: // ...
break;
}
}
代替笨重的开关,您可以使用查找数组来获取错误消息(可以取决于语言)。
顺便说一句,不建议使用标题重定向中的相对URI,绝对(例如/login.php
)或完全限定的URI(例如http://example.org/login.php
)是首选。
对于表单验证你有3个选项:
就我个人而言,我会为我的表格实施(1)和(3)。 (1)为了方便普通用户和(3)为了向后兼容像我这样的偏执狂。
使用会话确实是基于重定向的验证的最干净的方式,因为它在任何情况下都不会在历史记录中留下任何已发布的页面。 但是,在基于AJAX验证的情况下,似乎有点矫枉过正
链接地址: http://www.djcxy.com/p/70267.html上一篇: Passing error messages in PHP
下一篇: NOINTERFACE on C#