我在登录表单上显示错误时遇到问题。
我的班级名为“Class.auth.php”,登录工作正常,如果用户未登录则将其引导回来。
在我的Auth类文件中,我有:
public $feedback_negatives = array();
然后我会有以下内容,如果登录失败:
$this->feedback_negatives[] = "Login failed.";
然后在页面上显示:
if (isset($auth)) {
if ($auth->feedback_negatives) {
foreach ($auth->feedback_negatives as $feedback_negative){
echo $feedback_negative;
}
}
}
然而,这似乎不起作用。我不知道我做错了什么。我以前使用$ _SESSION来存储错误消息(这里推荐了很多答案),但这看起来更清晰。任何帮助表示赞赏。
答案 0 :(得分:0)
当您检查$auth
存在时,如果它$auth->feedback_negatives
始终存在,您可以将该代码简化为
if (isset($auth)) {
foreach ($auth->feedback_negatives as $feedback_negative){
echo $feedback_negative;
}
}
因为对一个空数组做一个foreach是非常合法的,它只是不会产生任何输出。
或者,通过像这样的计数来测试数组
if (isset($auth)) {
if (count($auth->feedback_negatives) > 0) {
foreach ($auth->feedback_negatives as $feedback_negative){
echo $feedback_negative;
}
}
}
答案 1 :(得分:0)
如果你想坚持使用更多面向对象的方式,这里有一个很好的类,你可以使用它来保存下一个请求的flash消息。
Session-based Flash Messages class for PHP
所以你真的不需要重新发明轮子。
关于您的情况($ auth-> feedback_negatives),当您在登录失败后重定向时,auth对象将从内存中销毁,因此当您尝试在页面后获取它时,$ auth-> feedback_negatives将为空已经刷新了。
所以你需要做的是在$ auth-> feedback_negatives成员变量中存储一个SESSION数组/变量,并使用accessor和mutator检查会话数组中是否有错误消息实际获取并显示登录页。感谢