1

我有一个带有用户名和密码的简单登录页面(index.php)。我创建了一个名为 db_connect.php 的文件,其中包含所有与数据库相关的功能。

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($username,$password) 。这里的问题是无论登录状态如何,输出都是空白页。如果我打印变量 $status ,它会返回一个资源 ID。但是什么都没有返回。

4

1 回答 1

0

惊人的:) sql 注入...不,我没有

or die("cannot connect"); 

使用 Exception 和 try/catch 块

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

哦。为什么是uid?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!';
}
于 2012-12-16T13:59:38.107 回答