Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать вывод логин:пароль из базы данных?
 
 автор: saaviper   (08.08.2015 в 20:25)   письмо автору
 
 

Добрый вечер!
Вобщем проблема простая,нужно прописать только пару строк кода, а вот что писать не знаю и нигде не нашел.
Нужно чтобы при вводе Логина и нажатии на кнопку выводился пароль.
В таблице 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` выдает список всех логинов и паролей таблицей.
Как сделать так чтобы выводился логин и пароль именно для этого логина?
Желательно с обьяснениями.
Заранее спасибо.

  Ответить  
 
 автор: cheops   (08.08.2015 в 20:43)   письмо автору
 
   для: 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']);

  Ответить  
 
 автор: saaviper   (08.08.2015 в 21:06)   письмо автору
 
   для: cheops   (08.08.2015 в 20:43)
 

Большое спасибо!
Подскажите еще кое-что, пожалуйста.
Если пользователь вводит неверное имя - это надо писать через if(!) { }? Если да то как? While только сегодня увидел просто..)
P.s. Уже сделал
В while указал $log = 1;
После скобок написал if($log != 1) {
exit("Такого пользователя не существует ".mysql_error());
}
Но всё же можно ли как-нибудь по-другому сделать?

  Ответить  
 
 автор: cheops   (08.08.2015 в 21:58)   письмо автору
 
   для: saaviper   (08.08.2015 в 21:06)
 

Вам не обязательно использовать цикл while, так как его использование имеет смысл лишь в том случае, если у вас запрос возвращает больше одной записи. В этом случае по результирующей таблице нужно идти циклом, чтобы извлечь все записи. У вас записей либо одна, либо ноль. Поэтому вы можете использовать вызов
$sql=mysql_fetch_array($result);

напрямую, без цикла while.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования