我定义了这个功能
function login_user($emailusername, $password) { }
该函数使用变量但是,当我尝试使用
调用它时$this->login->login_user('username', 'password');
它返回一个错误,说明这些变量在函数中是未定义的。
编辑:我在登录模型中设置了该功能
我收到这些错误:
遇到PHP错误 严重性:注意 消息:未定义的索引:密码 文件名:models / login.php 行号:20
第20行:$ pass = crypt($ password,$ hash ['password']);
遇到PHP错误 严重性:注意 消息:未定义的索引:用户名 文件名:models / login.php 行号:26
第26行:if($ user_data ['username'] == $ emailusername || $ user_data ['email'] == $ emailusername){
遇到PHP错误 严重性:注意 消息:未定义的索引:电子邮件 文件名:models / login.php 行号:26
第26行:if($ user_data ['username'] == $ emailusername || $ user_data ['email'] == $ emailusername){
这是功能
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;
}
答案 0 :(得分:1)
此错误不在您的变量中。 $ hash表中没有索引calldes'password'; 首先检查你的$ hash表。
$hash = $query->result();
函数返回对象数组包含
$hash->password = '';
如果想获得单行而结果是数组使用row_array()函数
$hash = $query->row_array();
返回
$hash['password']
答案 1 :(得分:1)
问题源于这一行:
$hash = $query->result();
As per the documentation,result()
执行以下操作:
此函数在失败时将查询结果作为对象或空数组的数组返回。通常你会在foreach循环中使用它......
因此,$hash
不包含名为password
,username
或email
的索引 - 因此您收到错误消息。
如果您只关心从该查询返回的第一行(这是我的假设),您可以使用row_array()
仅返回第一条记录,作为数组,这将使这些指数可用,如下:
$hash = $query->row_array();
// $hash['password'], $hash['username'], and $hash['email'] are now available
答案 2 :(得分:0)
考虑到您使用的是codeignitor,如果该功能位于控制器“Login”中,请使用
$this->login_user('username', 'password');
如果函数在库中,那么请确保已加载库并且实例的名称为“login”
如果你直接包含了文件,那么只需创建一个对象并调用方法
$loginObj = new login();
$loginObj->login_user('username', 'password');
干杯,
吠陀