Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/48: Рейтинг темы: голосов - 48, средняя оценка - 4.75
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891

Реализация авторизации...

22.09.2009, 23:14. Показов 9619. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем, передо мной стоит задача, сделать прогу с системой авторизации (ввод логина и пароля) со всякими прибомбасами (работаю в C++ Builder 2010).
Пока у меня она находится на самом начальном уровне, но уже возникли сложности.
Сейчас мне надо, чтобы при нажатии на кнопку срабатывала проверка введенного пароля: обращаемся к файлу, в которм уже забит пароль, изымаем его оттуда и сравниваем с тем, что был введен в поле Edit. Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::Button4Click(TObject *Sender)
{
AnsiString apass=Form1->Edit1->Text;
FILE* f = fopen ("admin.txt", "r+");
if (f == NULL)
{ShowMessage ("Файл не открыт");
return;}
char pass[30];
fscanf (f, "%s", pass);
if ( apass != pass )
{ShowMessage ("Неверный пароль");
return;}
ShowMessage ("Верный пароль");
}
Так вот.. при нажатии кнопки всегда выводит "Файл не открыт", хотя admin.txt создан (разумеется в том же каталоге, где и проект) =(((
Ребят, очень прошу помощи...

Добавлено через 19 минут
Плин... Я мегадаун!) Оказывается, файл надо было поместить в папочку debug =)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.09.2009, 23:14
Ответы с готовыми решениями:

Реализация авторизации
Здравствуйте форумчане! У меня возникла проблема в реализации следующего функционала: Имеется три формы Form1, Form2, Form3. ...

Реализация авторизации
Всем привет!Я создал авторизацию такого типа: <?php session_start(); ?> <?php if(empty($_SESSION) or...

Реализация авторизации
Здравствуйте, подскажите пожалуйста, как реализовать так, чтобы пользователь который не авторизовался на сайте не смог увидеть его...

24
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
25.09.2009, 18:41  [ТС]
Студворк — интернет-сервис помощи студентам
GAV_13, Ну да... Проще =)) если учесть, что я с С++, как и с вообще программингом дружу недельки полторы =))
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
26.09.2009, 15:31  [ТС]
Честно говоря, совсем не понимаю смысл использования ini в моей задаче... Не вижу, как сделать, чтобы циклом заполнялись пара логин-пароль... Как удалить такую пару... Как их сравнить непосредственно для авторизации...
0
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
26.09.2009, 16:31
Это просто...
При входе юзер ввел логин и пароль. Заводим функцию проверки
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool TForm1::VerifyUser(String login, String passw)
{
  String real_passw;
  TIniFile *Ini = new TIniFile(ExtractFilePath(Application->ExeName)+"users.ini");
  try {
    real_passw = Ini->ReadString(login,"password","");
  }
  __finally {
    delete Ini;
  }
  return passw == real_passw;
}
и когда надо проверить юзера делаем так
C++
1
2
3
4
5
  if(!VerifyUser(Edit1->Text, Edit2->Text)) {
    ShowMessage ("Неверный пароль");
    return;
  }
  ShowMessage ("Верный пароль");
А заводим юзера так
C++
1
2
3
4
5
6
7
  TIniFile *Ini = new TIniFile(ExtractFilePath(Application->ExeName)+"users.ini");
  try {
        Ini->WriteString(Edit1->Text,"password",Edit2->Text); //
  }
  __finally {
    delete Ini; // только здесь произойдет запись
  }
1
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
27.09.2009, 17:58
Приложение состоит из четырех форм:
1. Главная – содержит меню нейтральных команд и вызов формы управления пользователями.
2. Форма авторизации. Служит для ввода логина и пароля. Выполняет проверку и при неудачной регистрации отображает течение времени ожидания следующей попытки.
3. Форма управления пользователями. Здесь добавляются команды работы со списком пользователей (удалить, добавить, изменить пароль или дополнительную информацию).
4. Форма отображения и изменения информации о пользователе

В опциях проекта на закладке Forms убрать из Auto-create все формы, кроме FormMain
Вложения
Тип файла: zip autor.zip (294.5 Кб, 57 просмотров)
2
125 / 116 / 17
Регистрация: 27.02.2007
Сообщений: 291
30.09.2009, 12:40
Теперь как сделать так, чтобы на кнопке выход снова происходил запрос авторизации.

Здесь лучше воспользоваться обработкой сообщения OnCloseQuery формы TFormMaim. Это сообщение предшествует сообщению OnClose. Аргумент CanClose, передаваемый по ссылке в обработчик OnCloseQuery, позволяет разрешить или запретить закрытие формы.
Но сначала сделаем private метод bool TFormMaim::Authorization(), чтобы многократно не писать вызов TLoginDlg. Приведем в соответствие код в обработчике TFormMaim::FormCreate.
И, на конец, обработка OnCloseQuery формы TFormMaim.
C++
1
2
3
4
5
6
7
8
void __fastcall TFormMaim::FormCloseQuery(TObject *Sender, bool &CanClose)
{
  FormMaim->Hide();
  if(Authorization()) {
    CanClose = false;
    FormMaim->Show();
  }
}
Полностью код UnitMain'a см. вложение
Вложения
Тип файла: zip UnitMain.zip (2.2 Кб, 30 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2009, 12:40

Реализация авторизации
Хочу сделать простейшую авторизацию продавца в базе, чтобы привязать его к "заказу". -Сделал форму ввода пароля. -Сделал...

Реализация окна авторизации в БД
Добрый день народ! Возникла проблемка, сразу скажу что я молод и горяч и неопытен к тому же, поэтому все что я делаю, это ...

Грамотная реализация авторизации
В разделе C++ Builder'a есть статья как правильнее реализовать авторизацию в приложении ...

Реализация авторизации на сайте
Мир вам! Подскажите, как реализовать авторизацию на сайте? Задача: предоставить доступ к определенной странице сайта по логину и паролю....

Реализация авторизации на сайте
Здравствуйте, у меня такая проблема, мне нужно было сделать регистрацию и авторизацию с bd. Регистрация получается, а авторизация...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Учебный мини "цифровой двойник" = (Сервер = Java + Flask_питон )+(3D = Гугловскаая 4T nvideo + google colab) +( WMS = Odoo на Docker)
anaschu 07.07.2026
Увидел в требованиях к вакансии создателя имитационных моделей связку (REst + Api + WMS + Anylogic + питон + 3D Nvideo), и решил посмотреть, что это такое. Из этого всего я работал более менее. . .
Море в объективе
kumehtar 06.07.2026
Хотел написать много проникновенных слов, но передумал. Оно само - говорит. Кто слышит тот слышит.
Doom для терминала без стрельбы и монстров. 3D Raycasting на ascii.
dcc0 05.07.2026
Попросил нейронную сеть deepai. org написать рейкастинг 3D с библиотекой ncurses для Linux. Чтобы можно было ходить на стрелочки. Чтобы стены были отрисованы символами. Справилась. Первый вариант. . .
Установка статуса документа по условию
Maks 05.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "НарядПутевка" разработанного в КА2. Задача: в табличной части "Материалы" документа при записи автоматически устанавливать статус. . .
Сезонность и суточность закисления почв
anaschu 04.07.2026
200 часов это все равно моловато. Есть ситуации, но нестандартные, когда смена происходит за 5 лет. Но обычно это 50 лет и более. Наверное, закисление почвы происходит сезонно в средней. . .
В чем ценность человеческого опыта в глобальном смысле?
kumehtar 03.07.2026
Возможно, ценность человека не в том, что он однажды достигает мудрости, а в том, что он становится носителем карты пути. Он знает не только истину, но и последовательность внутренних изменений,. . .
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru