vitalik8311 Опубликовано 17 октября, 2022 Поделиться Опубликовано 17 октября, 2022 Добрый день! Тут думаю, над SQL запросом, запрос должен выглядеть так: FDQuery1.SQL.Text:='Select * FROM user'+' WHERE login,password =' +Login+','+Password? или так DQuery1.SQL.Text:='Select * FROM user'+' WHERE login='+Login,password ='+Password; Чтобы проверить соответствует логин и пароль Цитата Ссылка на комментарий
1 krapotkin Опубликовано 17 октября, 2022 Поделиться Опубликовано 17 октября, 2022 https://www.cyberforum.ru/blogs/469693/blog5254.html select * from user where login = :login and password = :password vitalik8311 1 Цитата Ссылка на комментарий
0 vitalik8311 Опубликовано 20 октября, 2022 Автор Поделиться Опубликовано 20 октября, 2022 (изменено) Спасибо тут раньше пользовался: Locate(FieldsCombo.Text, SearchEd.Text, [loPartialKey, loCaseInsensitive]); Было удобно, но тут задумался что лучше, запросы или Locate. дело в том что Locate возвращает ответ в случае удачи Изменено 20 октября, 2022 пользователем vitalik8311 Цитата Ссылка на комментарий
1 krapotkin Опубликовано 20 октября, 2022 Поделиться Опубликовано 20 октября, 2022 все очень просто. представьте что у вас 100500 тысяч пользователей, и давайте всех их скачаем на компьютер, а тут поищем среди них через Locate() сама по себе плохая мысль. но кроме того, это значит, что вам еще и все их пароли должны прислать из базы? т.е. вам останется только выбрать, на чье имя вам интереснее оформить вашу ипотеку? vitalik8311 1 Цитата Ссылка на комментарий
0 vitalik8311 Опубликовано 21 октября, 2022 Автор Поделиться Опубликовано 21 октября, 2022 стал искать логин с помощью запроса: server.7z Цитата Ссылка на комментарий
0 vitalik8311 Опубликовано 21 октября, 2022 Автор Поделиться Опубликовано 21 октября, 2022 select * from user where login = :login and password = :password select * from user where login = :login дает логин пароль первой строчки и все Цитата Ссылка на комментарий
1 krapotkin Опубликовано 21 октября, 2022 Поделиться Опубликовано 21 октября, 2022 а можно в архивы не класть DCU EXE и всякие RSM файлы по 89 мбайт? нужен только исходный код и база vitalik8311 1 Цитата Ссылка на комментарий
0 krapotkin Опубликовано 21 октября, 2022 Поделиться Опубликовано 21 октября, 2022 (изменено) еще хороший тон прилагать хотя бы краткую инструкцию - что надо переименовать, куда поместить путь к базе, и что нажать, чтобы запустить программу и потом что нажать, чтобы получить ошибку. еще раз обращаю внимание, что для того, чтобы вам помогали, нужно как-то позаботиться о том, кто должен почему-то разбираться в вашем коде. Он не отформатирован даже. Есть волшебство Ctrl+D или Ctrl+W в cnWizard, которые это даже делают автоматически за вас. я двумя постами выше написал, как должен выглядеть запрос. У вас совершенно не такой. Если вы хотите делать по-своему, делайте, но я тогда при чем тут? самое главное. Даже неправильный запрос нужно открыть! FDQuery4.SQL.Clear; FDQuery4.SQL.Add('SELECT * FROM usersbase'); FDQuery4.SQL.Add('WHERE Login='+Login); Password1:=FDQuery1.FieldByName('Password').AsString; Group1:=FDQuery1.FieldByName('Group').AsString; Other1:=FDQuery1.FieldByName('Other').AsString; где тут открытие ? в какой момент программа должна обратиться к серверу? ну и ясно, что мой текст по ссылке вы не читали. потому что строковые константы хотя бы нужно оборачивать кавычками, но вообще речь шла о параметрах, которые позволяют и этого не делать. я не стал разбираться в хитростях остальной вашей логики, там сомнительное использование непонятно где объявленных внешних переменных и какие-то неизвестные науке операции с числами и строками из базы. еще совершенно неясно, почему запрос идет в FDQuery4, а поля вы запрашиваете в FDQuery1 ??? главная идея - вам юзер ввел логин и пароль. вы запросили сервер, есть ли юзер с таким логином и паролем. сервер либо нашел его, либо нет. если нет, то все переменные неплохо бы сбросить в пусто. сам запрос помещен в компонент в дизайн-тайме, не нужно его каждый раз писать заново итого function TForm4.verifikation(Login, Password: string): string; begin result := ''; Group1 := ''; Other1 := ''; FDQuery4.Close(); FDQuery4.ParamByName('login').AsString := login; FDQuery4.ParamByName('password').AsString := password; FDQuery4.Open(); if FDQuery4.RecordCount = 0 then exit; I := 4; Password1 := Password; Group1 := FDQuery4.FieldByName('Group').AsString; Other1 := FDQuery4.FieldByName('Other').AsString; if Group1 <> 'Admin' then I := I - 1 else Result := '"' + inttostr(I) + '"' + Other1 + '"'; if Group1 <> 'moder' then I := I - 1 else Result := '"' + inttostr(I) + '"' + Other1 + '"'; end; Изменено 21 октября, 2022 пользователем krapotkin Цитата Ссылка на комментарий
0 krapotkin Опубликовано 21 октября, 2022 Поделиться Опубликовано 21 октября, 2022 как заставить это работать и что вы имели в виду я так и не понял, и не стал разбираться по вышеуказанным причинам просто привел пример верного запроса к базе Цитата Ссылка на комментарий
0 vitalik8311 Опубликовано 22 октября, 2022 Автор Поделиться Опубликовано 22 октября, 2022 (изменено) FDQuery4.ParamByName('login').AsString := login; FDQuery4.ParamByName('password').AsString := password; Вспомогательные переменные: login1, password1,Group1, Other1, нужны на этапе трассировки программы чтобы увидеть какую строку выделил запрос строку login,password,Other - чтобы выделить из запроса присланного клиентом нужные данные далее после проверки(если она прошла успешно) Group,Other - заполняться из базы возвращаться клиенту. password,Other- может заполнить и изменить пользователь в любое время(функция в разработке) FDQuery1-видеть всю таблицу FDQuery4 - для запроса Немного о том почему мне удобнее проверять наличие логина: Дело в том что при регистрации нужно проверить есть логин можно ли его зарегистрировать или нет если такого логина нет можно зарегить если логин соответствует начинается проверка пароля иначе нет смысла проводить проверку пароля и и обратно отсылается результат если пароль соответствует начинается проверка группы пользователя Изменено 22 октября, 2022 пользователем vitalik8311 Цитата Ссылка на комментарий
Вопрос
vitalik8311
Добрый день! Тут думаю, над SQL запросом, запрос должен выглядеть так:
FDQuery1.SQL.Text:='Select * FROM user'+' WHERE login,password =' +Login+','+Password?
или так
DQuery1.SQL.Text:='Select * FROM user'+' WHERE login='+Login,password ='+Password;
Чтобы проверить соответствует логин и пароль
Ссылка на комментарий
9 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.