php - 从mysql中选择加密密码

标签 php

我只需要从表中选择密码以及通过登录表单输入的特定用户名。我将密码以加密形式存储在 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/

相关文章:

php - Magento 在哪里设置报价项目的价格?

php - MongoDB 更新替换文档

php - php中如何统计上传文件的数量

PHP $_POST 在 IE9 和 IIS7 上为空

php - 使用数据库值填充下拉列表并拆分字母排序

php - 查询中的Mysql查询

php - 如何在 Html div 中使用 php 变量值

php - jquery 使用 .submit() 表单不提交

php - Laravel:如何将路由缓存 5 分钟?

php - PUT 后请求对象属性显示为字符串