MySQL Проверьте, совпадают ли имя пользователя и пароль в базе данных. - PullRequest
3 голосов
/ 12 марта 2011

У меня есть форма с текстовым полем с атрибутом имени имя пользователя и еще одна с атрибутом имени пароль .У меня также есть база данных со столбцами под названием user и pass .Когда мои пользователи зарегистрировались, он добавил имя пользователя в столбец user и пароль в столбец pass .

Как мне сделать запрос MySQL, чтобы проверить, что формаотправил правильное имя пользователя и пароль, а затем, если у него есть ветка, позволяющая мне ввести код, если это удалось?

Мне действительно нужен какой-то код, этот бит не подходит, я знаю, что это должно быть что-токак SELECT * FROM table WHERE username == $username AND... но потом я застрял, потому что у меня есть пароль MD5 в базе данных, и этот первый бит, вероятно, неверен.Пожалуйста помоги.:)

Спасибо

Ответы [ 3 ]

10 голосов
/ 31 декабря 2011
//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!");
9 голосов
/ 19 февраля 2013

Вместо выбора всех столбцов в счетчике count (*) вы можете ограничить счет для одного столбца count (UserName) .

Вы можете ограничить весь поиск одной строкой, используя Лимит 0,1

SELECT COUNT(UserName)
  FROM TableName
 WHERE UserName = 'User' AND
       Password = 'Pass'
 LIMIT 0, 1
7 голосов
/ 13 марта 2011

1.) Хранение паролей базы данных Используйте какой-то хэш с солью, а затем измените хэш, запутайте его, например, добавьте отдельное значение для каждого байта.Таким образом, ваши пароли будут надежно защищены от атак по словарю и радужных таблиц.

2.) Чтобы проверить, совпадает ли пароль, создайте хэш для пароля, введенного пользователем. Затем выполните запрос к базе данных дляимя пользователя и просто проверьте, идентичны ли два хэша паролей.Если это так, дайте пользователю маркер аутентификации.

Запрос должен выглядеть следующим образом:

select hashedPassword from users where username=?

Затем сравните пароль с вводом.

Дополнительные вопросы

...