CodeIgniter函数不接受参数


CodeIgniter function not taking parameters

我定义了这个函数

function login_user($emailusername, $password) { }

该函数使用变量,但是当我尝试使用调用它时

$this->login->login_user('username', 'password');

它返回一个错误,说明这些变量在函数中未定义。

编辑:我在登录模型中设置了功能

我得到这些错误:

遇到PHP错误严重程度:通知消息:未定义的索引:密码文件名:models/login.php线路编号:20

第20行:$pass=crypt($password,$hash['password']);

遇到PHP错误严重程度:通知消息:未定义的索引:username文件名:models/login.php线路编号:26

第26行:if($user_data['username']=$emailusername||$user_data['email']==$emaileusername){

遇到PHP错误严重程度:通知消息:未定义的索引:电子邮件文件名:models/login.php线路编号:26

第26行:if($user_data['username']=$emailusername||$user_data['email']==$emaileusername){

这是的功能

     function login_user($emailusername, $password) {
        //To initiate session set this cookie
        $query = $this->db->query("SELECT password FROM usrs WHERE username = '$emailusername' or email = '$emailusername'"); 
        $hash = $query->result();
        $pass = crypt($password, $hash['password']);
        $nq = $this->db->query("SELECT usr_id, username, email from usrs WHERE email = '$emailusername' or username = '$emailusername' and password = '$pass'");
        $user_data = $nq->result(); 
        if($emailusername&&$password) {
            if ($user_data['username'] == $emailusername || $user_data['email'] == $emailusername) {
                if($hash['password'] == $pass) {
                    $_SESSION['login'] = True;
                    $_SESSION['uid'] = $user_data['usr_id'];
                    $_SESSION['username'] = $user_data['username'];

                    return True;
                } else
                    return False; 
            } else
                return False;
        } else 
            return False; 
    }

此错误不在您的变量中。您的$hash表中没有索引调用"password";请先检查您的$哈希表。

$hash = $query->result();

函数返回对象数组组成

$hash->password = '';

如果想要得到单行并且结果是数组,请使用row_array()函数

$hash = $query->row_array();

这会返回

$hash['password']

问题源自以下行:

$hash = $query->result();

根据文件,result()执行以下操作:

此函数将查询结果返回为对象的数组,或在失败时返回空数组

因此,$hash不包含名为passwordusernameemail的索引,因此您会收到错误消息。

如果您只关心该查询返回的第一行(这是我的假设),则可以使用row_array()只返回第一条记录,并将作为数组,这将使这些索引可用,如下所示:

$hash = $query->row_array();
// $hash['password'], $hash['username'], and $hash['email'] are now available

考虑到您正在使用代码点火器,如果该功能在控制器"登录"中,则使用

$this->login_user('username', 'password');

如果函数在库中,请确保已加载库,并且实例的名称为"login"

如果您直接包含了该文件,那么只需创建一个对象并调用方法

$loginObj = new login();
$loginObj->login_user('username', 'password');

干杯,

韦丹特