Php 针对MySQL数据库验证表单密码

Php 针对MySQL数据库验证表单密码,php,html,mysql,database,login,Php,Html,Mysql,Database,Login,我对PHP比较陌生,我正在尝试设置一个登录系统。给我带来麻烦的部分是,试图检查从表单收到的密码是否与MySQL数据库上相应的电子邮件相匹配(请记住,表单上也提交了电子邮件地址)。目前我不确定该怎么做,但这是我收集的源代码 <html> <body> <?php $servername = "localhost"; $username = "***"; $password = "***"; $dbname = "pearsem_mystore"; // Create

我对PHP比较陌生,我正在尝试设置一个登录系统。给我带来麻烦的部分是,试图检查从表单收到的密码是否与MySQL数据库上相应的电子邮件相匹配(请记住,表单上也提交了电子邮件地址)。目前我不确定该怎么做,但这是我收集的源代码

<html>
<body>
<?php
$servername = "localhost";
$username = "***";
$password = "***";
$dbname = "pearsem_mystore";

// Create Connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check database connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT firstName, userEmail, userPass FROM users WHERE userEmail = '".$_POST["userEmail"]."'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();

if ($row["userPass"] == $_POST["userPass"]) {
    // If true... Welcome {firstname}
    echo "Welcome " . $row["firstName"];
} 
elseif ($result->num_rows == 0) {
    echo "Incorrect email address/password";
} 
else {
    echo "Error";
}
$conn->close();

?>
</body>
</html>

首先:

如果您将原始密码存储在数据库中,那么这将是一个大问题 不要

在写入dB之前使用密码\u散列。然后在将密码与用户输入进行比较时验证密码

三个链接可帮助您:


您需要显示表单,并且-密码是否以纯文本形式存储?如果是这样的话,那是非常不安全的。你可以在这里阅读更多关于密码验证的内容。此外,您可能希望使用数据库,而不是将凭据存储为php变量为什么不通过mysql本身检查密码<代码>选择。。。其中电子邮件=。。。和pass=…
。若此查询返回数据,则用户已通过身份验证,但您需要清理所有传入数据。您的代码易受sql注入攻击。是否将原始密码保存到dB?你有更多的问题。。。