我的表单中有一个名为attribute username 的文本框,另一个名称属性为 password 的表单。 我还有一个名为 user 和 pass 的列的数据库。当我的用户注册时,它将用户名添加到用户列,并将密码添加到传递列。
我如何制作一个MySQL查询来检查表单是否提交了正确的用户名和密码,然后是否有一个分支让我输入代码如果成功了?
我真的需要一些代码,这一点不顺利我知道它应该是SELECT * FROM table WHERE username == $username AND...
之类的东西然后我卡住了因为我在数据库中有一个MD5密码而且第一位可能是错误的。请帮忙。 :)
由于
答案 0 :(得分:10)
//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!");
答案 1 :(得分:9)
您可以限制一列计数(用户名)的计数,而不是选择计数 count(*)中的所有列。
您可以使用Limit 0,1
将整个搜索限制为一行SELECT COUNT(UserName)
FROM TableName
WHERE UserName = 'User' AND
Password = 'Pass'
LIMIT 0, 1
答案 2 :(得分:7)
1。)存储数据库密码 使用某种哈希值与盐然后改变哈希值,对其进行模糊处理,例如为每个字节添加一个不同的值。这样你的密码就可以抵御字典攻击和彩虹表。
2.。)要检查密码是否匹配,请为用户输入的密码创建哈希值。然后针对用户名执行针对数据库的查询,并检查两个密码哈希值是否相同。如果是,请为用户提供身份验证令牌。
查询应该如下所示:
select hashedPassword from users where username=?
然后将密码与输入进行比较。
进一步的问题?