我定义了这个函数
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
不包含名为password
、username
或email
的索引,因此您会收到错误消息。
如果您只关心该查询返回的第一行(这是我的假设),则可以使用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');
干杯,
韦丹特