2012-07-24 59 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