首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL检查数据库中用户名和密码是否匹配

MySQL检查数据库中用户名和密码是否匹配
EN

Stack Overflow用户
提问于 2011-03-12 20:46:12
回答 3查看 117.1K关注 0票数 3

我有一个表单,它有一个带有名称属性用户名的文本框,还有一个带有name属性密码的表单。我还有一个数据库,其中包含名为user和pass的列。当我的用户注册时,它将用户名添加到用户列,密码添加到pass列。

我如何进行MySQL查询以检查表单是否提交了正确的用户名和密码,然后如果表单有一个分支让我输入代码(如果它成功的话)?

我真的需要一些代码,这一点不太好,我知道它应该类似于SELECT * FROM table WHERE username == $username AND...,但是我被困住了,因为我在数据库中有一个MD5密码,而且第一个位可能是错误的。请帮帮忙。:)

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-12 21:07:24

1.)数据库密码的存储使用带有salt的某种哈希,然后修改哈希,混淆它,例如为每个字节添加一个不同的值。这样的话,你的密码就能抵御字典攻击和彩虹表。

2.)若要检查密码是否匹配,请为用户输入的密码创建散列。然后对数据库执行用户名查询,并检查两个密码散列是否相同。如果是,则给用户一个身份验证令牌。

然后,查询应该如下所示:

代码语言:javascript
运行
复制
select hashedPassword from users where username=?

然后将密码与输入进行比较。

更多的问题?

票数 8
EN

Stack Overflow用户

发布于 2011-12-30 21:37:50

代码语言:javascript
运行
复制
//set vars
$user = $_POST['user'];
$pass = md5($_POST['pass']);

if ($user&&$pass) 
{
//connect to db
$connect = mysql_connect("$server","$username","$password") or die("not connecting");
mysql_select_db("users") or die("no db :'(");
$query = mysql_query("SELECT * FROM $tablename WHERE username='$user'");

$numrows = mysql_num_rows($query);


if ($numrows!=0)
{
//while loop
  while ($row = mysql_fetch_assoc($query))
  {
    $dbusername = $row['username'];
    $dbpassword = $row['password'];
  }
  else
      die("incorrect username/password!");
}
else
  echo "user does not exist!";
} 
else
    die("please enter a username and password!");
票数 10
EN

Stack Overflow用户

发布于 2013-02-19 11:21:18

与选择计数(*)中的所有列不同,您可以限制一列的计数()

通过使用限制0,1,可以将整个搜索限制为一行。

代码语言:javascript
运行
复制
SELECT COUNT(UserName)
  FROM TableName
 WHERE UserName = 'User' AND
       Password = 'Pass'
 LIMIT 0, 1
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5285388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档