gpt4 book ai didi

php - 从mysql中选择加密密码

转载 作者:搜寻专家 更新时间:2023-10-31 20:56:28 26 4
gpt4 key购买 nike

我只需要从表中选择密码以及通过登录表单输入的特定用户名。我将密码以加密形式存储在 mysql 表中。所以我需要比较给定的密码和存储的密码,并且必须打印“登录成功”。否则密码不正确。这是我的代码。现在我得到的输出为“1Resource id #4”。有人能帮忙吗...

mysql_select_db($dbName);
$user_name=$_POST['name'];
$pswd=$_POST['pswd'];
$res = mysql_query("select * from xxx where Name='$user_name'");
$row = mysql_num_rows($res);
echo $row;
$encpass=mysql_query("SELECT password FROM xxx WHERE Name = '$user_name'");
$result1= mysql_fetch_array($encpass);
echo $result1;
if($row>0)
{
//echo 'hi';
if(md5($pswd)==$result1)
{
echo 'hi';
echo "you have successfully signed in!!!";
//echo $name = $row['Name'];
//header("location:check.html");
}
}

else
echo "you are not a member";

最佳答案

你把这个复杂化了。您不需要从数据库中检索密码。您只需要查看是否可以选择包含提交的用户名和密码的行。

首先 - 从用户那里获取用户名和密码,并以匹配的形式获取它们,但是您已经存储了它。

$username = $_POST['name'];
$password = my_password_encryption_function( $_POST['pswd'] );

其次 - 设置您的 SQL。使用准备好的语句来防止 SQL 注入(inject)攻击。您当前的方法是不安全的,并且允许用户更改任意用户的密码(除其他外)。

$preparedStatement = $db->prepare('SELECT * FROM xxx WHERE Name = :name AND password = :password');
$preparedStatement->execute(array(':name' => $username, ':password' => $password));
$rows = $preparedStatement->fetchAll();

第三 - 只计算返回的行数。如果你得到一个结果,密码匹配。如果得到零结果,则密码不匹配。

关于php - 从mysql中选择加密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1176579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com