比较 MYSQL 密码与 HTML 表单密码

Comparing MYSQL password vs HTML form password

我有一个包含用户 ID 和密码的登录表单。 我猜问题出在 mysql database.so 中的 md5 密码 How to compare HTML form password with mysql password.??

这是登录表单的代码

<body>
    <form method="post" action="validate_login.php" >
        <table border="1" >
            <tr>
                <td><label for="LoginID">LoginID</label></td>
                <td><input type="text" 
                  name="LoginID" id="LoginID"></td>
            </tr>
            <tr>
                <td><label for="password">password</label></td>
                <td><input name="password" 
                  type="password" id="password"></input></td>
            </tr>
            <tr>
                <td><input type="submit" value="Submit"/>
                <td><input type="reset" value="Reset"/>
            </tr>
        </table>
    </form>
</body>

和 php 代码:

<?php

// Grab User submitted information

$LoginID = $_POST["LoginID"];
$password = $_POST["password"];
//$UserID= $_POST["UserID"];
// Connect to the database

 $username = "avaninfo_dairy";
    $password = "CMANcustomersupportsystem1234#";
    $hostname = "localhost";

    //connection to the database
    $con = mysqli_connect($hostname, $username, $password)
      or die("Unable to connect to MySQL");
      echo "Connected to MySQL<br>";



// Select the database to use
mysql_select_db("avaninfo_dairy",$con);

$result = mysqli_query("SELECT * FROM cman_users WHERE LoginID = $LoginID");

$row = mysqli_fetch_array($result);

if($row["LoginID"]==$LoginID && $row["Password"]== $password)
    echo"You are a validated user.";
else
    echo"Sorry, your credentials are not valid, Please try again.";
?>

执行此操作的方法是使用与用户密码相同的 salt 进行 md5 编码,并根据存储在数据库中的 md5 哈希值对其进行检查。 http://php.net/md5

使用md5函数

$row = mysqli_fetch_array($result);

if($row["LoginID"]==$LoginID && $row["Password"]== md5($password))
    echo"You are a validated user.";
else
    echo"Sorry, your credentials are not valid, Please try again.";

使用 MD5 内置函数:

if($row["LoginID"]==$LoginID && $row["Password"]== MD5($password))
    echo"You are a validated user.";
else
    echo"Sorry, your credentials are not valid, Please try again.";

(假设您要将未散列的密码与 md5 散列的密码进行比较。)

$row["Password"] == $password 更改为 $row["Password"] == md5($password)

$row = mysqli_fetch_array($result);

if($row["LoginID"]==$LoginID && $row["Password"]== md5($password))
    echo"You are a validated user.";
else
    echo"Sorry, your credentials are not valid, Please try again.";

关于 md5 的更多信息:http://php.net/manual/en/function.md5.php

P.S。 - 如果它在您的控制范围内,我建议您使用 password_hash()password_verify() 来散列您的密码。 它比 md5().

安全得多

您可以使用md5 function。此外,您不需要检查 LoginID,因为 SQL Select 预过滤器。

if($row["Password"]== md5($password))

但是整个安全系统是错误的。 Web 浏览器应发送用户名和 md5(密码)。永远不要通过互联网发送密码。

此外,MD5 散列已被证明是可破解的。至少使用 SHA-1 哈希。

并且大多数系统对哈希进行加盐处理,以便不同用户的相同密码在数据库中具有不同的哈希值。

答案很简单。首先要清楚一些,您需要了解发生了什么。

存储在数据库中的 MD5 哈希算法

"md5 password in the mysql database"

是一种方式。这意味着一旦加密,您就不能 "undo" 它。您可以做的是将散列值与它进行比较,看它是否匹配。

How to compare HTML form password with mysql password.??

这会将 html 表单密码与 mysql 密码进行比较, $hashed_value_from_mysql 是您来自 mysql 的加密密码,并且 $_POST[password] 是您提交表单时的密码 您的 name="password" 之后可以通过 $_POST 访问 您提交表格取决于您使用的方法。

if ($hashed_value_from_mysql === md5('$_POST[password]')) {
  //if the password matched do whatever here
} else {
  //it doesn't match, throw an error
  echo "password doesn't match";
 }

<?php

// Grab User submitted information

$LoginID = $_POST["LoginID"];
$password = md5($_POST["password"]);
//$UserID= $_POST["UserID"];
// Connect to the database

 $username = "avaninfo_dairy";
    $password = "CMANcustomersupportsystem1234#";
    $hostname = "localhost";

    //connection to the database
    $con = mysqli_connect($hostname, $username, $password)
      or die("Unable to connect to MySQL");
      echo "Connected to MySQL<br>";



// Select the database to use
mysql_select_db("avaninfo_dairy",$con);

$result = mysqli_query("SELECT * FROM cman_users WHERE LoginID = $LoginID" and Password=$password);

$row = mysqli_num_row($result);

if($row>0)
    echo"You are a validated user.";
else
    echo"Sorry, your credentials are not valid, Please try again.";
?>
试试这个,它会很好用