Php 当我转到Localhost并尝试用户名和密码时,它会告诉我这是一个错误吗?
当我转到Localhost并尝试用户名和密码时,它会告诉我这是一个错误吗?为什么?输入的用户名/密码或两者与数据库表my_db不匹配 原因: Localhost表示数据库在本地得到仲裁。因此,在my_db表下的本地数据库中,不存在具有给定用户名和密码的用户。 可能是远程数据库服务器中的数据有效 解决方案: 1.从远程数据库获取转储并放入本地主机,以便本地数据库和远程数据库都是副本 2.对于简单的解决方案,只需在my_db表中插入所需的详细信息Php 当我转到Localhost并尝试用户名和密码时,它会告诉我这是一个错误吗?,php,security,passwords,md5,Php,Security,Passwords,Md5,当我转到Localhost并尝试用户名和密码时,它会告诉我这是一个错误吗?为什么?输入的用户名/密码或两者与数据库表my_db不匹配 原因: Localhost表示数据库在本地得到仲裁。因此,在my_db表下的本地数据库中,不存在具有给定用户名和密码的用户。 可能是远程数据库服务器中的数据有效 解决方案: 1.从远程数据库获取转储并放入本地主机,以便本地数据库和远程数据库都是副本 2.对于简单的解决方案,只需在my_db表中插入所需的详细信息 希望有帮助看起来输入的用户名/密码与数据库表my_d
希望有帮助看起来输入的用户名/密码与数据库表my_db不匹配 原因: Localhost表示数据库在本地得到仲裁。因此,在my_db表下的本地数据库中,不存在具有给定用户名和密码的用户。 可能是远程数据库服务器中的数据有效 解决方案: 1.从远程数据库获取转储并放入本地主机,以便本地数据库和远程数据库都是副本 2.对于简单的解决方案,只需在my_db表中插入所需的详细信息 希望有助于使用密码\u散列 注册时使用
password\u hash()
散列密码并将其存储在数据库中,登录时使用password\u verify()
这样验证密码
2) 用户准备的语句以避免sql注入
<?php
session_start();
if(isset($_SESSION["user_id"])){
header("location: /web/home.php");
}
if(isset($_POST["s"])){
$username = $_POST["un"];
$password = $_POST["ps"];
$conn = mysqli_connect("localhost","root","","my_db") or die("Connection failed: " . mysqli_connect_error());
$stmt = $conn->prepare("SELECT * FROM table_name WHERE username=?");
$stmt->bind_param('s',$username);
$stmt->execute();
$get_result =$stmt->get_result();
$row_count= $get_result->num_rows;
if($row_count>0)
{
$record = $get_result->fetch_assoc();
if(password_verify($password,$record['password']))
{
$_SESSION["user_id"]= $record["user_id"];
header("location: /web/home.php");
}
else
{
echo "<h3 style = 'color:red'>Error in username or password</h3>";
}
}else{
echo "<h3 style = 'color:red'>Error in username or password</h3>";
}
}
?>
1)使用密码\u散列
注册时使用password\u hash()
散列密码并将其存储在数据库中,登录时使用password\u verify()
这样验证密码
2) 用户准备的语句以避免sql注入
<?php
session_start();
if(isset($_SESSION["user_id"])){
header("location: /web/home.php");
}
if(isset($_POST["s"])){
$username = $_POST["un"];
$password = $_POST["ps"];
$conn = mysqli_connect("localhost","root","","my_db") or die("Connection failed: " . mysqli_connect_error());
$stmt = $conn->prepare("SELECT * FROM table_name WHERE username=?");
$stmt->bind_param('s',$username);
$stmt->execute();
$get_result =$stmt->get_result();
$row_count= $get_result->num_rows;
if($row_count>0)
{
$record = $get_result->fetch_assoc();
if(password_verify($password,$record['password']))
{
$_SESSION["user_id"]= $record["user_id"];
header("location: /web/home.php");
}
else
{
echo "<h3 style = 'color:red'>Error in username or password</h3>";
}
}else{
echo "<h3 style = 'color:red'>Error in username or password</h3>";
}
}
?>
您的表名和数据库名是my_db吗?这是正确的吗?那么,您是如何将密码保存到db中的?(顺便说一句,你不应该md5它。使用密码散列)使用mysqli\u error
来找出哪里出了问题。对!@JYoThI…@Jeff密码:ABC123您的表名和数据库名是my_db?这是正确的吗?那么,您是如何将密码保存到db中的?(顺便说一句,你不应该md5它。使用密码散列)使用mysqli\u error
来找出哪里出了问题。对!@JYoThI…@Jeff password:abc123在注册页面使用password\u hash()
,在登录页面使用password\u verify()
。。。请确保您的密码散列长度约为60个字符,或者更好地为255个字符。请在注册页面上使用密码散列()
,并在登录页面上使用密码验证()
。。。确保您的密码哈希长度约为60个字符,或更好的255个字符