Форум программистов, компьютерный форум, киберфорум
anomal6
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

PHP & C# [простой пример реализации входа в личный кабинет]

Запись от anomal6 размещена 18.05.2022 в 08:55
Показов 4304 Комментарии 0

Добра всем читающим.

"Шарахаясь" по разным форумам вижу частый вопрос о том как же сделать вход в личный кабинет на сайтах через Net.
Если материалы и есть, то они все устаревшие, под php 5.5 и <

Данный материал нацелен больше на тех, у кого знаний языка пока маловато)))
Буду использовать php7.4, MySQLi (не PDO), NetFramework 4.8

Итак. Представим что у нас есть сайт, на нём есть личный кабинет, и тут мы решили сделать приложение (на телефон, на ПК, хоть на XBOX не имеет значения)

Об условимся самым простым примером. Представим что у нас есть таблица users со следующим содержанием.
ID - который будет инкрементом
Login - varchar
Password - varchar
Email - varchar
Mobile - int

Первым делом создадим config.php файл (если конечно сайт есть а конфига до сих пор нету)
config.php
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
    
$MySQL_HOST = 'localhost';                     //Хост
$MySQL_USER = 'USERNAME';                 //Имя пользователя     
$MySQL_USER_PASS = 'PASSWORD';       //Пароль от БД
$MySQL_DB = 'MYDB';                           //Название БД
 
 $mysqli = mysqli_connect($MySQL_HOST, $MySQL_USER, $MySQL_USER_PASS, $MySQL_DB);
 mysqli_set_charset($mysqli, 'utf8');
 
?>


Такого конфига нам до жопы хватит.

Теперь нам нужен php скрипт который примет через POST запрос логин и пароль и проверит в БД учётные данные и вернёт клиенту что-то в ответ.
Будем использовать самый простой вариант (пока нам не до SQL_Inject, шифрования и всякой защиты) в ответ посылать будем простой echo.

login.php
PHP
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
<?php
 
require_once 'conf.php'; //Подключим наш конфиг файл
 
 
/*Проверим, чтобы в POST запросе не было пустоты (вдруг кто через сайт будет пробовать а не через наше приложение*/
if(isset($_POST["username"]) && isset($_POST["password"])){
 
//mysqli_real_escape_string — Экранирует специальные символы в строке для использования в SQL-выражении
    $user = mysqli_real_escape_string($mysqli, $_POST["username"]); //Запишем
    $pass = mysqli_real_escape_string($mysqli, $_POST["password"]); //Логин и пароль в переменные
 
 //Составим SQL запрос для выполнения
//Выберем всех в таблице users где логин будет совпадать с нашим переданным логином
    $sql= "SELECT * FROM users WHERE login ='$user'";
 
//Выполняем наш запрос
    $query =  mysqli_query($mysqli, $sql);
 
//получим результат чтобы с ним работать
    $result = mysqli_fetch_array($query);
 
//Разбираем на ячейки наш результат
    $rowcount = mysqli_num_rows($query);
    
 
//Да можно проще $mysqli->query($sql), но речь о понимании процесса
 
 
//Если логин есть в БД то запрос обязательно вернёт ячейку с пользователем. Поэтому проверим, есть ли у нас ячейка?
    if($rowcount == 1) {
 
//Отлично. Теперь проверим наш пароль, совпадает ли он с паролем который мы приняли в POST
//Данный метод проверки как пример, проверять нужно в зависимости от того как шифровали пароль
//мой метод шифровки был с рекомендациями на php.net
//$passwd_hash = password_hash($passwd, PASSWORD_BCRYPT, $options);
        if(password_verify($pass, $result["passwd"]))
        { 
                      //Ну и отлично. Тут проверка пройдена.
                      echo "Successful";
        }
                
                //Если пароль не верный сообщим об этом. Вдруг кто-то пытается взломать
        else { echo "WrongPass"; }
    }
 
        //Ну а если нет ячейки, значит и нет пользователя, и тоже об этом сообщим
    else if($rowcount == 0)
    {
        echo "NoAccount";
    }
}
 
//Ну а если пустые POST запросы, то и выводить нечего.
else {
echo "Blank";
}
 
?>


Ну и переходим собсна к Net части.
Будем использовать WinForm для простоты


NETПервым делом конечно же ЮЗИНГИ
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
using System.Collections.Specialized;
using System.Net;
 
NameValueCollection DataToSend = new NameValueCollection(); //Будем использовать коллекцию string'ов
WebClient wc = new WebClient(); //Веб обязательно мы же будем подключаться в ИнтернетЫ
const string url_login = "https://site.ru/cp/login.php"; //Путь в интернетах,  где лежит наш созданный login
 
//Сделаем наш метод авторизации
 
void Auth()
{
     //Разрешим сертификат и защищённое соединение даже если сертификат просрочен
     //Нужен только в том случае если у нас подключение через https
     ServicePointManager.Expect100Continue = true;
     ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
 
//Обязательно ключ DataToSend используем с таким же названием который принимаем в POST запросе
      this.DataToSend["username"] = textBoxLogin.Text; 
      this.DataToSend["password"] = textBoxPass.Text;
 
//В ответе получим сообщения от сервера. wc.UploadValues отправит на нужный адрес наш POST
      string answer = Encoding.UTF8.GetString(wc.UploadValues(url_login, this.DataToSend));
 
 switch (answer)
            {
 
                case "Successful":
                 MessageBox.Show("УРАА! Мы вошли в Личный Кабинет!!!");
                break;
 
                case "WrongPass":
                 //Тут обрабатываем не верный пароль
                break;
 
                case "NoAccount":
                 //Тут мы знаем что логина нашего нет
                break;
 
                case "Blank":
                 //А здесь POST пустой
                break;
                
}


Использовать код можно на NetStandard, NetFramework, NetCore
И развернуть реализацию куда больше.

Например для какого нибудь лаунчера для MainCraft подойдёт за глаза.

Так же добавлю, конечно тут мы не защищены ни от чего. Никаких шифрований, никакой защиты.
Но цель авторизации выполнена? выполнена, а защита это уже совсем другая история.

Данный материал не претендует на научную статью, а лишь демонстрирует пример авторизации на современный лад.

Не по теме:

Ну и срач в комменты как всегда приветствуется

Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
GitHub Copilot в JetBrains: модель по умолчанию, Fix и контроль MCP
and_y87 12.10.2026
10 октября 2026 года GitHub обновил Copilot для JetBrains: добавил настройки стартовой модели, исправления из диагностики и управление автозапуском MCP. Поддержка IDE 2025. 1 прекращена — требуется. . .
День 5 из 28: Codex подсказывает следующий запрос
and_y87 12.10.2026
9 октября 2026 года OpenAI запустила бету Composer predictions — подсказок следующего сообщения в текущем диалоге Codex. Это помощь с формулировкой запроса, а не автоматическое продолжение задачи. . . .
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru