通过类向用户显示消息

时间:2016-07-30 16:00:31

标签: php

我在登录表单上显示错误时遇到问题。

我的班级名为“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来存储错误消息(这里推荐了很多答案),但这看起来更清晰。任何帮助表示赞赏。

2 个答案:

答案 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检查会话数组中是否有错误消息实际获取并显示登录页。感谢