2012-07-24 56 views
-1

我这个函数CodeIgniter的功能没有服用参数

function login_user($emailusername, $password) { } 

函数使用的变量,但是,当我尝试使用

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

它返回一个错误,指出这些变量是不确定叫它在函数中。

编辑:我设置一个登录模式功能

我得到这些错误:

遇到

一个PHP错误 严重性:注意 消息:未定义指数:密码 文件名:型号/ login.php 行号:20

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

甲PHP错误遇到 严重性:注意 消息:未定义指数:用户名 文件名:型号/ login.php中 行号:26

线26:如果($的user_data [ '用户名'] = = $ emailusername || $ USER_DATA [ '电子邮件'] == $ emailusername){遇到

一个PHP错误 严重性:注意 消息:未定义指数:电子邮件 文件名:型号/ login.php中 行号: 26

第26行:if($ user_data ['username'] == $ emailusername || $ USER_DATA [ '电子邮件'] == $ 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; 
    } 
+1

这个函数是什么类?是名为'login'的类吗? – Kush 2012-07-24 17:59:18

+2

更具体的错误请'在函数中'对我来说不是那么清楚。 – EricG 2012-07-24 18:00:50

+0

@Kush该类被称为登录是一个问题? – Supremekhaoz 2012-07-24 18:40:24

回答

1

此错误是不是在你的变量。 你的$ hash表中没有索引calldes的密码; 首先检查你的$哈希表。

$hash = $query->result(); 

函数返回的对象数组由

$hash->password = ''; 

如果想要得到单列和结果是阵列中使用row_array()函数

$hash = $query->row_array(); 

这将返回

$hash['password'] 
+0

是的,这是问题:D谢谢 – Supremekhaoz 2012-07-24 19:56:06

0

考虑您正在使用codeignitor,如果函数是在控制器 '登录',然后使用

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

如果函数是在库中,然后确保您已加载库和实例的名称是“登陆”

如果您已包括直接将文件然后就使一个对象并调用该方法

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

干杯,

吠陀

+0

问题中引用的错误与此无关。 – 2012-07-24 19:51:47

+0

我现在可以看到,问题在我回答后进行了编辑。 – Vedant 2012-07-24 20:31:33

+0

没问题 - 只是想我会指出来(而不是downvote)。 – 2012-07-24 20:34:26

1

问题原因从这个线TES:

$hash = $query->result(); 

As per the documentationresult()执行以下操作:

该函数返回的查询结果作为对象,或失败空数组的阵列。通常你会在foreach循环使用......

所以,$hash不包含名为password指数,usernameemail - 因此您收到的错误消息。

如果你只关注与该查询(这是我的假设)返回的第一行,你可以使用row_array()只返回第一个记录,作为数组,这将使这些指标可用,像这个:

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

也谢谢你,但其他人回答之前:P – Supremekhaoz 2012-07-24 19:56:27

+0

@Supremekhaoz:没问题 - 很高兴我的回答很有帮助。 – 2012-07-24 19:57:20