freefish_yoyo 2012-06-04 17:58:29 2485次浏览 7条回复 0 0 0
<?php
class UserIdentity extends CUserIdentity
{
    public function authenticate()
    {
		$users=array(
			'demo'=>'demo',
			'admin'=>'admin',
		);
        if(!isset($users[$this->username]))
			$this->errorCode=self::ERROR_USERNAME_INVALID;
        else if([color=Red]$users[$this->username]!==$this->password[/color])
			$this->errorCode=self::ERROR_PASSWORD_INVALID;
        else
			$this->errorCode=self::ERROR_NONE;
        return !$this->errorCode;
    }
}

红色表示的那句,为什么这样可以验证用户名和密码是否匹配呢?不是很理解

  • 回复于 2012-06-04 20:20 举报

    $this->username$this->password是用户输入用户名和密码后传入到UserIdentity中的值,比如说用户输入到用户名为demo,密码为demo;那么这里应该会变成:
    $users[‘demo'],上面给出了$users数组:

     $users=array(
        'demo'=>'demo',
        'admin'=>'admin',
    );
    

    所以这里 $users[‘demo']==‘demo’
    希望你能明白!

  • 回复于 2012-06-05 09:37 举报

    呵呵。。谢谢你sam,是我自己没看仔细,原来用户名和密码是一样的,才能这么写的。如果不一样的话就不能这样写了吧。thanks

  • 回复于 2012-06-05 14:55 举报

    不一样,也可以这样写的。
    $users[$this->username] 代表的就是密码。真应该把$users[$this->username]改写成$passwords[$this->username]

  • 回复于 2012-06-05 16:50 举报

    这不是取了$users这个数组中的用户名了吗??

  • 回复于 2012-06-05 16:53 举报

    thanks very much

  • 回复于 2012-06-06 06:20 举报

    可以这样

    $users=array(
        'demo'=>'demo_password',
        'admin'=>'admin_password',
    );
    

    $users key是用户名,value是密码。
    你可以试试。

  • 回复于 2012-06-06 14:13 举报

    明白了,thx a lot

您需要登录后才可以回复。登录 | 立即注册