Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2013, 21:02   #1
megostudent
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 320
По умолчанию получить данные с бд

использую sqlquery
есть таблица на хостинге, в ней есть столбцы login и pass, на форми 2 эдита (типа форма входа), не могу врубиться как сделать такую вещ:
пользователь вводит логин(эдит1) и пасс(эдит2), прога должна взять логин из эдит1, по запросу SELECT pass FROM users WHERE login='user'(эдит1) получить пасс юзера и сравнить этот пасс с введеным в эдит2, ну и разумеется если все гуд то вывести наш радостный меседж =)
Обьясните плиз.
megostudent вне форума Ответить с цитированием
Старый 13.05.2013, 21:26   #2
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

примерно
Код:
sqlquery.close;
sqlquery.SQL.Text := 'SELECT pass FROM users WHERE login = :login';
sqlquery.Parameerts.ParamByName('login').Value := Edit1.Text;
sqlquery.Open;
if sqlquery.RecordCount > 0 then
  if sqlquery.FieldByName('pass').Value = Edit2.Text then
    ShowMessage('Пароль верный')
  else
    ShowMessage('Пароль неверный')
else
  ShowMessage('Логин не найден');
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 13.05.2013, 21:52   #3
megostudent
Форумчанин
 
Регистрация: 31.12.2010
Сообщений: 320
По умолчанию

ну а если у меня 10 юзеров в таблице, то в эдит получается весь столбец юзеров запишется?
плохо понял чтот
megostudent вне форума Ответить с цитированием
Старый 14.05.2013, 00:11   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

во-первых, в Edit тут вообще ничего не пишется,
во-вторых, из Edit1 берётся логин и по нему в SqlQuery запросом выбираются записи из таблицы, в полученной(ых) записи(ях) (если их больше одной, то берётся верхняя) проверяется совпадение поля pass с тем, что записано в Edit2.
Если пароль для отобранного логина из таблицы совпадает с тем, что в Edit2 - выдаётся радостное сообщение.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.05.2013, 10:29   #5
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Цитата:
ну а если у меня 10 юзеров в таблице, то в эдит получается весь столбец юзеров запишется?
ну, как бы, такова была изначальная постановка вопроса
Цитата:
Сообщение от megostudent Посмотреть сообщение
как сделать такую вещ:
пользователь вводит логин(эдит1) и пасс(эдит2), прога должна взять логин из эдит1, по запросу SELECT pass FROM users WHERE login='user'(эдит1) получить пасс юзера и сравнить этот пасс с введеным в эдит2
и он абсолютно справедливо поведет себя в таком случае
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
из Edit1 берётся логин и по нему в SqlQuery запросом выбираются записи из таблицы, в полученной(ых) записи(ях) (если их больше одной, то берётся верхняя) проверяется совпадение поля pass с тем, что записано в Edit2.
а для того чтоб он искал по правильному - необходимо немного переделать логику всего этого и искать не пароль по логину, а запись по введенноу логину И паролю. т.е. как-то так
Код:
// в Edit1 вводим логин, в Edit2 вводим пароль и жмем кнопку ОК
  sqlquery.close;
  sqlquery.SQL.Text := 'SELECT * FROM users WHERE login = :login AND pass = :pass';
  sqlquery.Parameerts.ParamByName('login').Value := Edit1.Text;
  sqlquery.Parameerts.ParamByName('pass').Value := Edit2.Text;
  sqlquery.Open;
  case sqlquery.RecordCount of 
    0 : ShowMessage('Пользователь не найден');
    1 : ShowMessage('Пользователь найден');
  else 
    ShowMessage('Что-то не то ... Найдено больше 1 записи с указаным логином\паролем');
  end;
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...

Последний раз редактировалось Yurk@; 14.05.2013 в 10:51.
Yurk@ вне форума Ответить с цитированием
Старый 14.05.2013, 11:30   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
а для того чтоб он искал по правильному - необходимо немного переделать логику всего этого и искать не пароль по логину, а запись по введенноу логину И паролю.
согласен.
ну, если совсем уж по правильному, то не по паролю, а по хэшу от него!
p.s. и хранить надо не пароль, а тот же хэш!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить данные из бд? Dkey PHP 3 28.08.2012 23:08
Получить данные из WMF AnTe Мультимедиа в Delphi 0 18.01.2011 08:14
Получить данные с сервера LT. Общие вопросы .NET 2 15.06.2010 19:38
Получить данные из _POST Arnezami PHP 2 17.01.2010 16:22
Получить неупакованные данные Voody Работа с сетью в Delphi 4 08.09.2009 20:33