Php 无法从数据库中获取我的登录页的数据:(
我试图从数据库中获取登录页面的数据,但似乎无法做到。它不断告诉我用户名或密码错误 我是这个领域的初学者,我的代码来自youtube form1.htmlPhp 无法从数据库中获取我的登录页的数据:(,php,html,database,phpmyadmin,Php,Html,Database,Phpmyadmin,我试图从数据库中获取登录页面的数据,但似乎无法做到。它不断告诉我用户名或密码错误 我是这个领域的初学者,我的代码来自youtube form1.html <!DOCTYPE html> <html> <head> <title>Login Site</title> </head> <body> <form method="POST" action="connect2.php"> Username :
<!DOCTYPE html>
<html>
<head>
<title>Login Site</title>
</head>
<body>
<form method="POST" action="connect2.php">
Username : <input type="text" name="username"><br><br>
Password : <input type="password" name="password"><br>
<input type="submit" value="Login" name="submit">
</form>
</body>
</html>
connect2.php
<?php
$con = mysqli_connect("localhost", "root", "") or die("Failed to connect to MySQL.");
mysqli_select_db($con, "abc") or die("Database does not exist.");
//require ('sql_connect.php');
if (isset($_POST['submit'])){
$username=mysqli_escape_string($_POST['username']);
$password=mysqli_escape_string($_POST['password']);
if (!$_POST['username'] | !$_POST['password']) {
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('You did not complete all of the required fields')
window.location.href='form1.html'
</SCRIPT>");
exit();
}
$sql= mysqli_query("SELECT *
FROM `account`
WHERE username = $username
AND password = $password ");
if(mysqli_num_rows($sql) > 0) {
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('Login Succesfully!.')
window.location.href='form1.html'
</SCRIPT>");
exit();
}else{
echo ("<SCRIPT LANGUAGE='JavaScript'>
window.alert('Wrong username or password. Please re-enter.')
window.location.href='form1.html'
</SCRIPT>");
exit();
}
}else{
}
?>
我认为PHP编码有问题,因为我一直收到“错误的用户名和密码”消息
更新:我的数据库截图我想
从用户名=$username和密码=$password的帐户中选择*
应该是
选择*FROM account WHERE username=\$username\和password=\$password\作为快速修复,在用户名和密码变量周围加引号:
SELECT * FROM `account` WHERE username = '$username' AND password = '$password'
改进此代码的一些技巧:
使用准备好的语句避免SQL注入
不要将密码存储在纯文本中,用盐将其散列
同样,在第一个条件下,你有一个错误,你使用的是位运算符,而不是逻辑或运算符
使用逻辑或运算符,你的脚本是开放攻击的。即使你应该考虑在MySQL或PDO API中使用,而不是级联值。d代码,更重要的是,它将帮助您为自己的利益调试代码。您可能会在几周/几个月内被要求修改此代码,最终您将感谢我。纯文本密码是一个非常糟糕的主意:PHP提供并请使用它们以确保用户的安全。此外,应该使用PHP标头重定向,而不是javascriptI我仍然是这个领域的初学者,我还没有学会如何用salt对密码进行哈希运算。我尝试在变量周围加引号,但仍然不起作用……Joffrey建议使用password\u hash和password\u verify,让它们在内部创建一个非常好的salt,而不是简单地建议使用salt进行哈希运算。