|
|
|
| Добрый вечер!
Вобщем проблема простая,нужно прописать только пару строк кода, а вот что писать не знаю и нигде не нашел.
Нужно чтобы при вводе Логина и нажатии на кнопку выводился пароль.
В таблице mysql id; name; login; mail; pass.
Нужны логин и пасс(пароль).
Вот код который я использовал(Сюда пишу только код, который относится к теме) :
<form action="" method="post">
<input name="login" type="text" placeholder="Ваш логин" />
<input type="submit" value="Востановить пароль" name="submit" />
</form>
$login = trim($_POST['login']);
include "../../db.php";
if(isset($_POST['submit'])){
$result=mysql_query('SELECT * FROM `users` WHERE login=`$login``');
while($sql=mysql_fetch_array($result)){
echo '<p>Пользователь:'.$sql['login'].'. Пароль: '.$sql['pass'].'</p>';
}
Выводится ошибка mysql_fetch_array() expects parameter 1 to be resource
Без WHERE login=`$login` выдает список всех логинов и паролей таблицей.
Как сделать так чтобы выводился логин и пароль именно для этого логина?
Желательно с обьяснениями.
Заранее спасибо. | |
|
|
|
|
|
|
|
для: saaviper
(08.08.2015 в 20:25)
| | У вас ошибка в SQL-запросе, вместо
$result=mysql_query('SELECT * FROM `users` WHERE login=`$login``');
|
следует писать
$result=mysql_query('SELECT * FROM `users` WHERE login='$login');
|
Так как вы не обрабатываете ошибки на стороне MySQL, вы её не видите. Если будете добавлять проверки типа
if(!$result) exit("Ошибка в SQL-запросе ".mysql_error())
|
Вы всегда сможете вскрыть эту ситуацию самостоятельно.
PS Код который вы используете подвержен SQL-инъекции, нельзя подставлять в запрос необработанные сырые данные, которые вводит пользователь - вопрос времени, когда запросом начнут манипулировать. Вместо
$login = trim($_POST['login']);
|
Лучше использовать
if (!get_magic_quotes_gpc())
$_POST['login'] = mysql_real_escape_string($_POST['login']);
}
$login = trim($_POST['login']);
|
| |
|
|
|
|
|
|
|
для: cheops
(08.08.2015 в 20:43)
| | Большое спасибо!
Подскажите еще кое-что, пожалуйста.
Если пользователь вводит неверное имя - это надо писать через if(!) { }? Если да то как? While только сегодня увидел просто..)
P.s. Уже сделал
В while указал $log = 1;
После скобок написал if($log != 1) {
exit("Такого пользователя не существует ".mysql_error());
}
Но всё же можно ли как-нибудь по-другому сделать? | |
|
|
|
|
|
|
|
для: saaviper
(08.08.2015 в 21:06)
| | Вам не обязательно использовать цикл while, так как его использование имеет смысл лишь в том случае, если у вас запрос возвращает больше одной записи. В этом случае по результирующей таблице нужно идти циклом, чтобы извлечь все записи. У вас записей либо одна, либо ноль. Поэтому вы можете использовать вызов
$sql=mysql_fetch_array($result);
|
напрямую, без цикла while. | |
|
|
|