Вход через AJAX / MySQL /PHP

#php #mysql #ajax

#php #mysql #ajax

Вопрос:

В принципе, я хочу проверить базу данных, чтобы увидеть, совпадают ли имя пользователя и пароль, если да, разблокируйте кнопку отправки.

 <?php
mysql_connect('localhost', '', '');
mysql_select_db('database');
if(isset($_POST['submit'])){
    mysql_query("SELECT username,password FROM table WHERE username='".$_POST['username']."',password='".$_POST['password']."'")
}
?>
  

Форма:

 <form method="post">
Username <input type="text" name="username" />
Password <input type="password" name="password" />
<input type="submit" name="submit" value="Login" />
</form>
  

Комментарии:

1. почему вам нужно разблокировать кнопку отправки, тогда кнопка отправки не используется в вашей форме входа.

Ответ №1:

Я не знаю, правильно ли я вас понял, но в любом случае попробуйте :

HTML:

   <form method="post">
     Username <input type="text" id="username" name="username" />
     Password <input type="password" id="password" name="password" />
    <input type="submit" name="submit" id="submit" value="Login" />
 </form>
  

jQuery:

     $("#submit").hide();
    $.post("checkUsername.php", { username: $("#username").val(), password: $("#password").val() }, function(result) {
 if(result == "true") { $("#submit").fadeIn(fast); }

 });
  

Php ( checkUsername.php ):

 if(mysql_num_rows(mysql_query("SELECT username,password FROM table WHERE username LIKE '". mysql_real_escape_string($_POST['username']) . "',password LIKE '".mysql_real_escape_string($_POST['password'])."'")))
    {
       echo "true";
    }
    else
    {

    echo "false";
    }
  

Ответ №2:

  1. В чем ваш вопрос? Вы забыли на самом деле задать один 😉
  2. Вам нужно, как минимум, экранировать строки с помощью mysql_real_escape_string() , прежде чем вставлять их в запрос. В противном случае вы созрели для SQL-инъекции
  3. Сохранение паролей в виде обычного текста, как правило, нецелесообразно. Хэш и соль.
  4. Уже существуют библиотеки аутентификации, которые делают большую часть этого за вас и защищают вас от целого ряда других проблем, о которых вы еще не слышали. Не изобретайте колесо, которое уже много раз создавалось гораздо более опытными людьми. Оцените пакеты, подобные PEAR_Auth

Ответ №3:

Вам следует избегать использования ключевого слова LIKE для приглашения входа, подобного этому, поскольку подстановочные знаки не зависят от mysql_real_escape_string. Пользователь может войти в систему с именем пользователя и паролем «%».

Смотрите следующее сообщение в блоге:http://blog.spiderlabs.com/2012/03/like-omg.html

Используйте = вместо LIKE.