CakePHP/PHP If语句用户登录错误/问题-这两个条件都设置为真?

CakePHP/PHP If语句用户登录错误/问题-这两个条件都设置为真?,php,cakephp,if-statement,login,Php,Cakephp,If Statement,Login,我正在使用CakePHP2.2.2并使用它构建会话信息,以存储所有用户的登录详细信息,这样我就可以通过我的整个站点访问它们。我写的代码如下: if (($GetPass == $this->data['Menu']['password'] && $GetUsers == $this->data['Menu']['username'])) { $this->Session->write('LoginData', array(

我正在使用CakePHP2.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'));

    }

我遇到的问题让我很恼火,这两种情况都是真的。因此,即使用户名和密码在数据库中,它仍然在设置flash消息?我就是不明白为什么?if语句的“else”部分只应在if语句中设置的条件为false时运行,对吗?那么为什么总是设置我的flash消息呢?

可能有两个原因,首先,您从CakePHP模型获得的密码字段可能是加密的。使用
debug($GetPass)
并检查它是否加密。其次,您试图在控制器中使用$this->data,它应该是
$this->request->data
。这里给出了执行您试图执行的操作的标准方法:

为什么不使用标准的Auth组件呢?和其他人一样?更干净,更安全,开箱即用。好吧,我现在可以看看这样做。我第一次这样做时,我无法让它工作。但问题仍然存在,就我所能看到的,我的if语句是正确的,那么为什么即使我的语句是正确的,它也会设置flash消息呢。如果声明不应该这样做,或者我遗漏了什么?