gpt4 book ai didi

PHP MySQL Table,用于登录表中的账户

转载 作者:行者123 更新时间:2023-11-29 22:32:37 24 4
gpt4 key购买 nike

我有一个名为“MainData”的 MySQL 表,有 3 列“用户名”、“电子邮件”和“密码”。我有我的代码片段,除了当我尝试将用户 $_POST 输入转换为 md5 哈希值时,它一切正常。当我关闭 md5 加密并且所有密码在数据库中可见时,它可以工作,但是当我使用 md5 时,它不起作用,只是回显“抱歉,用户名或密码不正确”。这是我的代码片段:

 <?php
$servername = "localhost";
$username = "avxtechn_benph64";
$password = "admin123";
$dbname = "avxtechn_users";
$dbtable = "MainData";

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

$usr = $_POST["user"];
$psr = $_POST["password"];

$sql = "SELECT username, pass FROM " . $dbtable;
$result = $conn->query($sql);
$nameCount = 0;
$UserName = 0;
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if ( $usr == $row["username"] && md5($psr) == $row["pass"]) {
$nameCount = $nameCount + 1;
$UserName = $usr;
}
}
} else {
echo "nil";
}
if ($nameCount > 0) {
echo ' Welcome back, ' . $UserName;
}else{
echo 'Sorry, that username or password was incorrect.';
}
$conn->close();
?>

这是完整的代码。

这是 PHPMyAdmin 数据库: enter image description here

最佳答案

我猜您的问题是您之前将密码以纯文本形式存储在数据库中。

因此,现在要进行身份验证工作,您应该:

if ( $usr == $row["username"] && $psr == $row["pass"]) {

if ( $usr == $row["username"] && (md5($psr)) == md5($row["pass"])) {

但最好的方法是通过运行以下查询来转换数据(确保首先进行备份):

UPDATE MainData SET pass = MD5(pass)

然后你的代码就可以开始工作了。但在转换之前请检查 pass 类型,以确保它可以容纳更大的字符串。

关于PHP MySQL Table,用于登录表中的账户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29684373/

24 4 0