2012-12-16 76 views
1

我有一個簡單的登錄頁面(index.php)用戶名和密碼。我創建了一個名爲db_connect.php的文件,它具有與數據庫相關的所有功能。PHP的MySQL日誌記錄問題

class Database{ 

    private $connection; 
    private $db; 

    function __construct() 
    { 

     $this->connection = mysql_connect('localhost','root','') or die("cannot connect"); 
     $this->db = mysql_select_db('logistics',$this->connection); 
    } 

    function verify_login($uid,$password) 
    { 
     $verify_login = "select user_id from log_users where user_login = '$uid' and user_password = '$password'";     
     $status = mysql_query($verify_login,$this->connection); 
     while($result = mysql_fetch_assoc($status)){ 
     if($result['user_id'] == '1') 
      { 
       return true; 
      } 
      else{ 
       return false; 
      } 
    } 
} 

我現在已經創建了用於調用verify_login函數($的用戶名,密碼$)類數據庫的對象。這裏的問題是無論登錄狀態如何,輸出都是空白頁面。如果我打印變量$ status,它會返回一個資源ID。但沒有任何回報。

+0

在代碼應的消息顯示,如果登錄成功?你知道你的函數在適用時是否返回true/false? –

回答

0

驚人的:) SQL注入......不,我還沒有

or die("cannot connect"); 

使用異常和try/catch塊

$verify_login = "select user_id from log_users where user_login = '$uid' and user_password = '$password'"; 

喔。爲什麼使用? uid是一個整數值還是字符串?如果字符串名稱變量行u_login或其他與出ID。但是,如果它的整數...在$ uid附近使用(int)來獲得整數類型的輸入數據。 $ user_passrord需要清潔:mysql_real_escaping幫助我們

$verify_login = "select user_id from log_users where user_login = '$uid' and user_password = 'mysql_real_escape_string($password)'"; 

比:

if(!empty($result)) { 
    return true; // auth 
}else{ 
    return false; // error auth 
} 

some_file.php:

// include your code 

if(verify_login($login, $password)) { 
    echo 'Auth!'; 
}