0

我正在使用 CakePHP 2.2.2 并用它构建会话信息,以存储所有用户的登录详细信息,以便我可以通过我的整个站点访问它们。我写的代码如下:

    if (($GetPass == $this->data['Menu']['password'] && $GetUsers == $this->data['Menu']['username'])) {
        $this->Session->write('LoginData', array(
                    'FristName' => $SQL[$key]['User']['fristname'],
                    'SurName' => $SQL[$key]['User']['surname'],
                    'UserName' => $SQL[$key]['User']['username'],
                    'AccessLevel' => $SQL[$key]['Role']['title'],
                    'Email' => $SQL[$key]['User']['email']
                    ));
    } else {
       $this->Session->setFlash('Sorry Login Details Do Not Match Our Records', array('element' => 'failure'));

    }

我遇到的问题是让我陷入困境,这两个条件总是正确的。那么即使用户名和密码在数据库中,它仍然在设置闪存消息吗?我就是不明白为什么?if 语句的“else”部分仅应在 if 语句中设置的条件为假时运行,对吗?那么为什么我的闪信总是被设置呢?

4

1 回答 1

0

可能有两个原因,首先,您从 CakePHP 模型获得的密码字段可能被加密。使用debug($GetPass);并检查它是否已加密。其次,您尝试在控制器中使用 $this->data 应该是$this->request->data. 此处给出了执行您尝试执行的操作的标准方法:http: //book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html

于 2012-10-20T11:31:31.803 回答