在非对象问题上调用成员函数

时间:2011-05-10 14:18:35

标签: php mysql

我遇到问题:

function do_login() {
global $db;

    $username = $_POST['username'];
    $password = md5($_POST['password']);

    $row = $db->query("SELECT username, password FROM users WHERE username = '$username' AND password = '$password'");

    while ($rows = mysql_fetch_array($row)) {
        if($username == $rows['username'] && $password == $rows['password']) {
            $_SESSION['Logedin'] = true;
            echo 'yah';
        }else{
            echo 'Neh';
        };
    }
}

因为它给了我这个错误:致命错误:  在第79行的C:\ xampp \ htdocs \ falco \ admin \ class \ auth.php中的非对象上调用成员函数query()

我不知道我错过了什么! 谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

$db可能未初始化。在上一行中发出var_dump($db);以查看其中包含的内容。

此外,您的代码在sql注入时完全开放...在查询中使用其中的任何内容之前清理$_GET / $_POST。试试这个用户名,例如:

$_POST['username'] = "admin' OR 1 = 1 OR username='"

答案 1 :(得分:0)

我的猜测(这只是一个猜测)是当你正在呼叫连接到数据库时,你得到的是错误代码或错误的代替数据库对象。而且你没有检查这个条件,后来就像普通变量一样使用它。当然,还有int或false或者没有查询方法的任何东西。

这只是猜测。