С вопросом: «Как сделать авторизацию в С?» рано или поздно сталкивается любой разработчик приложения на этом языке. Для чего нужна авторизация? По разным причинам. Основная из них — это предоставление более полной услуги или информации авторизованным пользователям.
То есть если пользователь пришел как «гость», то ему, возможно, доступна информация лишь для ознакомления с проектом; если же пользователь авторизовался, то он может воспользоваться полным функционалом. Такая модель взаимоотношений с пользователями используется очень часто.
Как сделать авторизацию в С
Способов сделать авторизацию множество. Мы сегодня рассмотрим более-менее «стандартную» ситуацию, когда разрабатывается Виндовс-приложение на С в Visual Studio и нужно сделать авторизацию с сохранением логинов и паролей в MySQL.
Для удобства мы разбили весь процесс на несколько шагов.
Создаем базу данных
Если у вас есть база данных — это хорошо; если нет, то давайте создадим новую «dbtest», где будем сохранять информацию о клиентах приложения. Внутри базы данных нужно будет создать таблицу «client» и определить ей следующие поля:
«id»(INT), добавив атрибут «AUTO_INCREMENT»;
«name»(VARCHAR(100));
«title»(VARCHAR(100));
«address»(VARCHAR(100)).
Создаем проект
Чтобы создать проект в Visual Studio, необходимо:
открыть меню по пути «Файл-Новый-Проект»;
по этому пути вам откроется окошко с новым проектом, где нужно будет заполнить пункты «Name», «Location», «Solution name».
Создаем интерфейс формы
На этом шаге необходимо будет создать внешний вид вашей будущей формы авторизации. Представим, что в ней будет кнопка авторизации и 2 обязательных поля:
«login»;
«password».
Настраиваем соединение с базой данных
Чтобы настроить соединение с базой данных, нужно будет создать специальный класс, например, «link». Вот как это можно реализовать:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MySql.Data.MySqlClient;
using System.Windows.Forms;
using System.Data;namespace Link_DB
{
class link
{
MySql.Data.MySqlClient.MySqlLink conn;
string myLinkString;
static string host = "localhost";
static string database = "dbtest";
static string userDB = "ecco";
static string password = "password";
public static string strProvider = "server=" + host + ";Database=" + database + ";User ID=" + userDB + ";Password=" + password;
public bool Open()
{
try
{
strProvider = "server=" + host + ";Database=" + database + ";User ID=" + userDB + ";Password=" + password;
conn = new MySqlLink(strProvider);
conn.Open();
return true;
}
catch (Exception er)
{
MessageBox.Show("Соединение нарушено! " + er.Message, "Информация");
}
return false;
} public void Close()
{
conn.Close();
conn.Dispose();
} public DataSet ExecuteDataSet(string sql)
{
try
{
DataSet ds = new DataSet();
MySqlDataAdapter da = new MySqlDataAdapter(sql, conn);
da.Fill(ds, "result");
return ds;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return null;
} public MySqlDataReader ExecuteReader(string sql)
{
try
{
MySqlDataReader reader;
MySqlCommand cmd = new MySqlCommand(sql, conn);
reader = cmd.ExecuteReader();
return reader;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return null;
} public int ExecuteNonQuery(string sql)
{
try
{
int affected;
MySqlTransaction mytransaction = conn.BeginTransaction();
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandText = sql;
affected = cmd.ExecuteNonQuery();
mytransaction.Commit();
return affected;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return -1;
}
}
}
Реализуем код авторизации
Возвращаемся к созданной форме и добавляем следующий код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;namespace Link_DB
{
public partial class AForm1 : AForm
{
link con = new link();
string id, username, password, firstname, lastname, address;
public AForm1()
{
InitializeComponent();
} private void btnLogin_Click(object sender, EventArgs e)
{
try
{ if (txtUsername.Text != "" && txtPassword.Text != "")
{
con.Open();
string query = "select id,username,password,firstname,lastname,address from user WHERE username ='" + txtUsername.Text + "' AND password ='" + txtPassword.Text + "'";
MySqlDataReader row;
row = con.ExecuteReader(query);
if (row.HasRows)
{
while (row.Read())
{
id = row["id"].ToString();
username = row["username"].ToString();
password = row["password"].ToString();
firstname = row["firstname"].ToString();
lastname = row["lastname"].ToString();
address = row["address"].ToString();
} MessageBox.Show("Data found your name is " + firstname + " " + lastname + " " + " and your address at " + address);
}
else
{
MessageBox.Show("Данные не найдены", "Информация");
}
}
else
{
MessageBox.Show("Login или Password заполнены верно", "Информация");
}
}
catch
{
MessageBox.Show("Соединение прервано", "Информация");
}
}
}
}
Заключение
Теперь вы знаете, как можно сделать авторизацию в С. Помните, что это всего лишь один подход из десятков.

Другое