登录脚本 - 尽管输入正确,但用户名和密码始终为false

时间:2014-09-05 03:20:07

标签: php mysql login

我是PHP和MySQL的新手。我有一个php和mysql的登录脚本。在用户tabell中是我的用户名和我在md5中的密码。但如果我在输入字段中输入正确的用户名和密码,脚本总是说“密码错误”。你能纠正我的代码吗?

if(isset($_POST['username']) AND isset($_POST['password'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    if(empty($_POST['username']) OR empty($_POST['password'])) {
        echo "Bitte fuelle alle Felder aus!";
    } else {
        $rows = mysqli_query($db,"SELECT * FROM users WHERE username = '".mysqli_real_escape_string($db, $username)."' AND password = '".mysqli_real_escape_string($db, $password)."' LIMIT 1") or die(mysqli_error($db));
        if(mysqli_num_rows($rows) == 1) {
            $_SESSION['username'] = $username;
            header("Location: home.php");
            echo "Erfolgreich eingeloggt"; 
    } else {
            echo "Falscher Benutzername";
        }
    }
}

新问题!

我的登录工作正常!现在我在家里。但是当我调用字符串$ username时我发出一个回显来自此消息:可捕获致命错误:类stdClass的对象无法在第19行的C:\ xampp \ htdocs \ home.php中转换为字符串

我的剧本:

if(!isset($_SESSION['username'])) { header("Location: index.php"); }

$username = mysqli_fetch_object(mysqli_query($db, "SELECT * FROM users WHERE username = '".$_SESSION['username']."' LIMIT 1")) or die(mysqli_error());
echo 'hi "'.$username.'"';

3 个答案:

答案 0 :(得分:1)

你的第二个问题是因为:

mysqli_fetch_object返回结果集的当前行而不是字符串。您可以打印或访问以下值:

while ($username= mysqli_fetch_object(mysqli_query($db, "SELECT * FROM users WHERE username = '".$_SESSION['username']."' LIMIT 1")))
{
printf("%s",$username ->your_column_name);

}

LINK

答案 1 :(得分:0)

嗯......还是不能发表评论。新来的。

您尝试将明文密码与md5哈希密码相匹配,因此永远不会匹配。在查询中使用密码之前,请尝试重新密码。您总是可以在某处回显结果,以确保您输入的内容与数据库中保存的内容相匹配。

答案 2 :(得分:0)

您正在从表中选择ALL,因此请更改:

echo 'hi "'.$username.'"';

类似于:

echo 'hi "'.$username->fieldname.'"';

其中字段名称是包含用户名的字段的名称

编辑,因为我看到他使用的对象不是数组。