Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Builder Рисование на форме, потоки Здраствуйте, хочу что бы по экрану бегали точки рисую их так Form1->Repaint(); Canvas->Pen->Color=TColor(RGB(rand()%255,rand()%255,rand()%255));; Canvas->Brush->Color=TColor(RGB(rand()%255,rand()%255,rand()%255));; Canvas->Ellipse(TRect(posX, posY, posX+radius, posY+radius)); posX=posX+10; posY=posY+10; Засунул эту функцию в таймер теперь точка бегает по экрану... https://www.cyberforum.ru/ cpp-builder/ thread652494.html C++ Builder RAD Studio XE2 и OpenGL
Здравствуйте! Подскажите как подключить OpenGL библиотеки к данному продукту, с OpenGL еще не работал. В папку "lib" glut32.lib и glut32.lib кинул В папку "include" glut.h кинул В систем и систем 32 glut32.dll glut.dll кинул вот простой пример: #include <stdlib.h> #include <gl\glut.h> GLint Width = 512, Height = 512; const int CubeSize = 200;
C++ Builder Печать Memo на нескольких листах Подскажите, печатаю содержимое Memo, как сделать чтобы при окончании листа остальной текст печатался на следующей строке? Алгоритм печати const int TOTAL_PAGES = 1; // Сколько страниц печатать int page, startPage, endPage; // Создание диалога выбора принтера TPrintDialog *printDialog = new TPrintDialog(this); // Установка опций диалога печати printDialog->MinPage = 1; ... https://www.cyberforum.ru/ cpp-builder/ thread652430.html C++ Builder Считывание матрицы из файла Всем доброго времени суток. Кто может подскакать простой способ считать из файла матрицу неизвестного размера? Я подумал может построково считать этот файл и делить его по пробелам, но кажется как то длинновато... может кто знает более простой способ? https://www.cyberforum.ru/ cpp-builder/ thread652426.html
C++ Builder В данной квадратной матрицы измените строку в котором содержится максимальный элемент со строкой в котором есть минимальный элемент. Результат выведит
Вопрос в теме
C++ Builder запись данных из DBGrida https://www.cyberforum.ru/ cpp-builder/ thread652331.html
Как произвести запись данных из DBGrida в Excel?
C++ Builder ADOStoredProc Всем доброго времени суток. Друзья, такая проблема: через ADOQuery работает DataModule2->Move->SQL->Clear(); DataModule2->Move->SQL->Append("EXECUTE Move " + IntToStr(UnitID) + ", " + Direction); DataModule2->Move->ExecSQL(); А через ADOStoredProc не хочет DataModule2->MoveUnit->Parameters->ParamByName("@UnitID")->Value = UnitID;... https://www.cyberforum.ru/ cpp-builder/ thread652270.html Какую БД выбрать? C++ Builder
Я еще новичок в этом деле. Не очень знаком с базами и хотел бы проконсультироваться. Для курсовой работы нужно сделать или подключить базу данных. Файлы базы должны создаваться внутри в программе при регистрации нового пользователя. Была идея сделать простую базу самому с использованием списков. Как лучше поступить? Взять что-то готовое из компонентов Билдера или попробовать сделать простые...
C++ Builder узнать название активного окна https://www.cyberforum.ru/ cpp-builder/ thread652219.html
как узнать название окна где наведен(или можна сказть активн курсор)?
C++ Builder indy FTP server demo https://www.cyberforum.ru/ cpp-builder/ thread652205.html
Подскажите где можно скачать demo FTP server и клиент на Indy 9 под C++ builder. 6, на оффициальном сайте нашел только для делфи.
из кода C++ Builder в Qt C++ Builder
void __fastcall TForm1::Button1Click(TObject *Sender) { float a = StrToFloat(AnsiReplaceStr(Edit1->Text, ".", ",")); float b = StrToFloat(AnsiReplaceStr(Edit2->Text, ".", ",")); float c = StrToFloat(AnsiReplaceStr(Edit3->Text, ".", ",")); //***** float FORMULA = a/100*b*c; Edit4->Text = FORMULA; }
C++ Builder Овальный Edit Можно ли создать Edit овальной формы. Если можно, то как? https://www.cyberforum.ru/ cpp-builder/ thread652168.html
75 / 36 / 1
Регистрация: 03.08.2012
Сообщений: 447
0

Регистрация пользователя в программе. Вход по логину и паролю. Проверка ввода - C++ Builder - Ответ 3453831

16.09.2012, 01:09. Показов 17622. Ответов 16
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Вот мои наработки по созданию программы которая предлагает зарегистрировать пользователя (Form2).
И вход по зарегистрированным данным (Form1). Login и Password. Подскажите ошибки и возможно существуют более серьезные методы реализации?

При регистрации программа создает папку (room//) в которой будут храниться все зарегистрированные пользователи. Потом создается папка для каждого пользователя в которой будут файлы. Личная информация и файл с хешированым паролем.

Возможно кому-то пригодится эта информация, а кто-то улыбнется вспомнив себя когда только начинал

1. Регистрация в программе (Form2) Описание.

Edit1 //Ник Нейм пользователя
Edit2 //Имя пользователя
Edit3 //Ввод пароля
Edit4 //Повтор ввода пароля
Сайт с огромный количеством всевозможных классных, красивых кнопочек. PNG и ICO. Сразу разные размеры.
Image2 //Крестик Jpeg. Будет отвечать за не корректный ввод.
Image3 //Галочка Jpeg. Будет отвечать за корректный ввод.
Image4 //Галочка Jpeg. Будет отвечать за корректный ввод.
CheckBox1 //У полей Edit3 и Edit4 свойство PasswordChar = "*"; Для того чтобы вводимый пароль был невидим тем кто сидит рядом. Если галочка в CheckBox1 будет в true. Тогда повтор пароля будет ненужен.
Label9 //Будет кнопкой регистрации. Она будет появляться если все условия созданы для регистрации.
Все остальные лейблы встречающиеся в коде обычный текст.

Выставляем свойства Visible:
C++
1
2
3
4
5
Image2->Visible=false;
Image3->Visible=false;
Image4->Visible=false;
CheckBox1->Visible=false;
Label9->Visible=false;

1.2. Подготовка к регистрации
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
//Функция Хеширования пароля методом Хор
AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
        {
        out += (char)(in[x] ^ pass[x%pass.Length()+1]);
        }
return out;
}
 
void __fastcall TForm2::Edit1Change(TObject *Sender)
{
//При вводе в Edit1 делаем проверку. Если такой пользователь уже зерегистрирован
//подсвечиваем Текст красным. Если такого нет, зеленым.
TSearchRec SearchRec;
AnsiString Papka = "room\\"+Edit1->Text;
 
if ( FindFirst( Papka, faDirectory, SearchRec ) == 0 )
                {
                     Edit1->Font->Color=clRed;
                }
                else Edit1->Font->Color=clWhite;
}
 
void __fastcall TForm2::Edit2KeyPress(TObject *Sender, char &Key)
{
//Вводим в поле имя только буквы
  if(((Key>='А')&&(Key<='я')) || ((Key>='a')&&(Key<='z'))
            || ((Key>='A')&&(Key<='Z'))||(Key==VK_BACK)) return Key;
    Key=0;
        {
                Key=0; //Обнуляем символ
                MessageBeep(-1); //Звуковой сигнал
        }
        return Key;
}
 
void __fastcall TForm2::Edit3Change(TObject *Sender)
{
if (Edit3->Text!="") //если поле не пустое
        {
                CheckBox1->Visible=true;
                Label4->Visible=true;
        }
 
else if (Edit3->Text=="") //если  поле пустое
        {
                Edit4->Text="";
                CheckBox1->Visible=false;
                Label4->Visible=false;
                Label9->Visible=false;
                Image2->Visible=false;
                Image3->Visible=false;
                Image4->Visible=false;
        }
 
//Если поле не пустое и стоит галочка на CheckBox1
if (Edit3->Text!=""&&CheckBox1->Checked==true) 
        {
                Label9->Visible=true;
        }
 
//если первое поле зашифровано или галочка стоит на "Не показывать символы"
//открываем Второй ввод (повтор ввода)
if (Edit3->PasswordChar=='*' || CheckBox1->Checked==false)
        {
            Label8->Visible=true;
            Edit4->Visible=true;
        }
 
//если поле не зашифровано или галочка стоит на "показывать символы" 
//или первое поле равно пустате
//закрываем второе поле
if (Edit3->PasswordChar==0 || CheckBox1->Checked==true || Edit3->Text=="")
        {
            Label8->Visible=false;
            Edit4->Visible=false;
        }
}
 
//При нажатии на CheckBox1
//Тут все логическое понятно
void __fastcall TForm2::CheckBox1Click(TObject *Sender)
{
if (CheckBox1->Checked==true)
        {
                Edit3->PasswordChar=0;
                Image2->Visible=false;
                Image3->Visible=false;
                Image4->Visible=false;
                Label9->Visible=true;
 
        }
        else
        {
                Edit3->PasswordChar='*';
                Label9->Visible=false;
        }
if (CheckBox1->Checked==false&&Edit3->Text==Edit4->Text)
        {
                Image4->Visible=true;
                Image3->Visible=true;
                Label9->Visible=true;
        }
 
if (CheckBox1->Checked==false&&Edit3->Text!=Edit4->Text)
        {
                Image4->Visible=true;
                Image3->Visible=false;
                Image2->Visible=true;
        }
}
 
void __fastcall TForm2::Edit4Change(TObject *Sender)
{
//Узнаем длинну введенной строки
//Регистрация будет возможна только при пароле длиннее 4ех знаков
int len_log = Edit3->Text.Length(); 
 
if (Edit4->Text=="")
        {
                Image4->Visible=false;
                Image3->Visible=false; //ок
                Image2->Visible=true;  //крест
        }
if (Edit3->Text==Edit4->Text)
        {
                Image4->Visible=true; //ок1
                Image3->Visible=true; //ок2
                Image2->Visible=false;  //крест
 
                Label9->Visible=true; //Кнопка разрешающая регистрацию
        }
if (Edit3->Text!=Edit4->Text||len_log<=4)
        {
                Image4->Visible=true;
                Image3->Visible=false; //ок
                Image2->Visible=true;  //крест
                Label9->Visible=false;
        }
}
1.3. Регитсрация. Создание файлов пользователя.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//При нажатии на кнопку "Регистрация"
void __fastcall TForm2::Label9Click(TObject *Sender)
{
//Передаем в функцию Хэширования пароля методом ХОР Текст нашего пароля
String a = XOR_Crypt(Edit3->Text,"!"); 
 
int len_log = Edit3->Text.Length(); //Узнаем длинну строки
 
if (len_log<=4) //Если пароль меньше 4-ех символов
        {
          MessageBox(NULL,"Пароль слишком короткий ","Внимание",MB_OK|MB_ICONINFORMATION);
          Edit3->Text="";
          Edit4->Text="";
          return;
        }
 
int Login;
int Password;
 
TSearchRec SearchRec;
AnsiString Papka = "room\\"+Edit1->Text;
 
        if (Edit1->Text=="")
                 {
                        MessageBox(NULL,"Поле Ник Нейм не может остаться пустым","Внимание",MB_OK|MB_ICONINFORMATION);
                        return;
                }
        if ( FindFirst( Papka, faDirectory, SearchRec ) == 0 ) 
                {
                        MessageBox(NULL,"Такой пользователь существует","Внимание",MB_OK|MB_ICONINFORMATION);
                        Edit1->Text="";
                        return;
                }
else
        {
//Создаем папки, файлы. Записываем данные.
                MkDir("room");
                MkDir("room\\"+Edit1->Text);
                String Path = "room\\"+Edit1->Text+"\\";
                String FileName = Edit1->Text;
 
        Login=FileCreate(Path + FileName +"_Info.txt");
        Password=FileCreate(Path + FileName +"_Password.pass");
        FileClose(Login);
        FileClose(Password);
 
                TStringList *File=new TStringList;
                TStringList *File2=new TStringList;
 
   File->LoadFromFile(Path + FileName + "_Info.txt");
   File->Add(Edit1->Text);
   File->Add(Edit2->Text);
   File->SaveToFile(Path + FileName + "_Info.txt");
 
   File2->LoadFromFile(Path + FileName + "_Password.pass");
   File2->Add(a);
   File2->SaveToFile(Path + FileName + "_Password.pass");
 
   MessageBox(NULL,"Регистрация прошла успешно!","Внимание",MB_OK|MB_ICONINFORMATION);
   Form_Reg->Close();
}
 
}

2. Описание Form1. Вход в программу.

Label8 //Кнопка для входа
Label8 //Будем выводить возникшие ошибки при авторизации
Edit1 //Поле для Логина
Edit2 //Поле для Пароля

Выставляем свойства Visible:
C++
1
Label8->Visible=false;
2.1 Подготовка к авторизации
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
void __fastcall TForm1::Edit1Click(TObject *Sender)
{
Edit1->Text="";
}
 
 
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
//Если вводимый пользователь существует подсвечиваем текст Зеленым
TSearchRec SearchRec;
AnsiString Papka = "room\\"+Edit1->Text;
 
Label8->Visible=false;
 
if ( FindFirst( Papka, faDirectory, SearchRec ) == 0 )
                {
                     Edit1->Font->Color=clLime;
                }
                else Edit1->Font->Color=clWhite;
}
 
 
void __fastcall TForm1::Edit2Click(TObject *Sender)
{
Edit2->Text="";
}
 
 
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
Label8->Visible=false;        
}
2.2 Вход в программу. Проверка. Вывод ошибок.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
void __fastcall TForm1::Label6Click(TObject *Sender)
{
TSearchRec SearchRec;
AnsiString Papka = "room\\"+Edit1->Text;
 
if (Edit1->Text==""&&Edit2->Text!="")
        {
          Label8->Visible=true;
          Label8->Caption="Введите Логин";
          return;
        }
if (Edit1->Text==""&&Edit2->Text=="")
        {
           Label8->Visible=true;
           Label8->Caption="Введите Логин и Пароль";
           return;
        }
if (Edit1->Text!=""&&Edit2->Text=="")
        {
           Label8->Visible=true;
           Label8->Caption="Введите Пароль";
           return;
        }
 
if ( FindFirst( Papka, faDirectory, SearchRec ) != 0 )
                {
                        Label8->Visible=true;
                        Label8->Caption="Такого логина не существует";
                        return;
                }
if (Edit1->Text!=""&&Edit2->Text!="")
        {
        String XOP_text;
        TStringList *file= new TStringList;
        file->LoadFromFile("room\\"+Edit1->Text+"\\"+Edit1->Text+"_Password.pass");
        Label8->Visible=true;
//Для того чтобы осущиствить проверку пароля применяем метод ХОР к тексту из ЭДИТ
//Получаем  пароль 
//Если из файла совпадает с введенным, то все верно.
        XOP_text = file->Strings[0];
        String  XOP_pass = XOR_Crypt(Edit2->Text,"!"); //Хешируем введенный пароль
                if (XOP_pass==XOP_text)
                {
                        Label8->Visible=false;
                        Form1->Visible=false;
                        Form3->Show(); //Открываем форму, которая все время была скрыта от нас 
                }
                else
                {
                        Label8->Visible=true;
                        Label8->Caption="Неверный пароль";
                }
        }
}
Вот и все. Спасибо всем кто пару месяцев мне помогал по кусочкам осущеставлять эту идею.
Надеюсь кому-нибудь поможет это И Выслушаю критику. Очень извеняюсь, что так подробно и грамоздко. Просто я сам когда что-то ищу, очень люблю когда все подробно и разжовано. Если что не понятно спрашивайте, может что и подскажу

Вернуться к обсуждению:
Регистрация пользователя в программе. Вход по логину и паролю. Проверка ввода C++ Builder
Миниатюры
Регистрация пользователя в программе. Вход по логину и паролю. Проверка ввода   Регистрация пользователя в программе. Вход по логину и паролю. Проверка ввода  
11
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2012, 01:09
Готовые ответы и решения:

В GUI программе должна проводиться проверка по логину и паролю...
В GUI программе должна проводиться проверка по логину и паролю(логин и пароль в MYSQL), запрос...

Вход по логину и паролю
Как можно это реализовать? для отдельного юзера. $login = 'введённый логин'; //login $pass =...

Вход на сайт по логину и паролю
Здравствуйте. Как реализовать вход на сайт по логину и паролю, регистрации на сайте нет. Т.е я...

Вход на сайт по логину и паролю
нашел в интернете скрипты, мол переходит на страницу когда введешь пароль, добавил еще и логин- он...

16
16.09.2012, 01:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.09.2012, 01:09
Помогаю со студенческими работами здесь

Вход по логину и паролю в общую папку
Подскажите как сделать на Win serv08 r2, мне нужно создать папку для пользователей, сделать логины...

Как реализовать вход на фтп по логину и паролю?
Как реализовать вход на фтп по ЛОГИН и ПАРОЛЬ введенные в 2 Edit'а так, чтобы потом эта программа...

Регистрация через VK API по определенному логину и паролю
Всем привет! Пишу приложение, которое будет работать с vk api, если подробнее, то пишу плеер, через...

Система Windows 7 блокирует вход на один сайт по постоянному логину и паролю
Здравствуйте! Я уже второй год подряд в мае-месяце сталкиваюсь с проблемой входа на один сайт...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru