<?php
require 'core.inc.php';
require 'connect.inc.php';
//print($current_file);
if(isset($_POST['username']) && isset($_POST['password'])){
$username = $_POST['username'];
$password = $_POST['password'];
$password_hash = md5($password);
if(!empty($username) && !empty($password)){
$query = "SELECT `id` FROM `users` WHERE `username`='$username' AND `password`='$password_hash'";
if($query_run = mysqli_query($conn,$query)){
$query_num_rows = mysqli_num_rows($query_run);
if($query_num_rows == 0){
print("Invalid username or password");
}
else if($query_num_rows == 1){
print("Found!");
}
}
}
else{
print("Enter username/password");
}
}
&GT;
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form action="<?php $current_file ?>" method="POST">
Username
<input type="text" name="username">
Password
<input type="text" name="password">
<input type="submit" value="Log in">
</form>
</body>
</html>
您好我想问这个,因为我是PHP的新手。由于我在字段中输入了正确的用户名和密码,因此我似乎无法获得“FOUND IT”的预期和期望输出。即使我正确输入它,它给我“无效的用户名和密码。”输出。谢谢!
答案 0 :(得分:0)
也许您的问题是数据库中的密码字段不是哈希值。尝试在查询中发送$ password变量而不是$ password_hash,如果有效,那就是问题。
答案 1 :(得分:0)
调试此方法的最简单方法是打印出sql查询。
$query = "SELECT `id` FROM `users` WHERE `username`='$username' AND `password`='$password_hash'";
var_dump($query);
然后,您可以查看正在生成的sql,甚至可以自己在数据库上运行它。可能是用户不存在或用户数据不同。
在你进一步了解之前,请先了解准备好的陈述。你不应该直接将用户输入放入mysql查询中。
这里有一些关于sql注入的轻松阅读。 http://php.net/manual/en/security.database.sql-injection.php