#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:
- В чем ваш вопрос? Вы забыли на самом деле задать один 😉
- Вам нужно, как минимум, экранировать строки с помощью
mysql_real_escape_string()
, прежде чем вставлять их в запрос. В противном случае вы созрели для SQL-инъекции - Сохранение паролей в виде обычного текста, как правило, нецелесообразно. Хэш и соль.
- Уже существуют библиотеки аутентификации, которые делают большую часть этого за вас и защищают вас от целого ряда других проблем, о которых вы еще не слышали. Не изобретайте колесо, которое уже много раз создавалось гораздо более опытными людьми. Оцените пакеты, подобные PEAR_Auth
Ответ №3:
Вам следует избегать использования ключевого слова LIKE для приглашения входа, подобного этому, поскольку подстановочные знаки не зависят от mysql_real_escape_string. Пользователь может войти в систему с именем пользователя и паролем «%».
Смотрите следующее сообщение в блоге:http://blog.spiderlabs.com/2012/03/like-omg.html
Используйте = вместо LIKE.