<Proger/> Про мене
ProProger

Цікаве > Авторизація і реєстрація на PHP

Автор: / Час публікації: 06/09/2017 23:19

Всім привіт! За проханням читача цього блогу(у чаті в Telegram. Ви також можете там пропонувати свої ідеї!), я напишу сьогодні статтю про реєстрацію і авторизацію на PHP. Ця тема є дуже популярна і практично необхідна на усіх динамічних сайтах! Реалізація не є дуже важкою. Але все-трішки подумати трішки потрібно.

Для початку потрібно продумати весь процес. Ось приблизно так це буде виглядати:

Схема входу і реєстрації | ProProger

Реєстрація

Отож, після того, як Ви отримали дані з форми на своєму сайті(Як їх надсилати в цій статті я розказувати не буду. Оскільки це не та тема, яку ми сьогодні розлядаємо!). Давайте створимо 3 змінні і запишимо в них ці дані(у моємо випадку це будуть змінні($login,$password,$repassword). Тепер потрібно створити таблицю(Наприклад, 'users') в базі даних даних з полями: login - VARCHAR(25), password - VARCHAR(32), id - INT AUTO_INCREMENT, access_token - VARCHAR(32). І підключаємось до бази даних за допомогою new mysqli() і записуємо це з'єднання в змінну $db.

Коли вище-сказане зроблено - можна приступати до оброблення даних. Отож, для початку потрібно перевірити чи не існує ще один зареєстрований користувач з таким же логіном. Для цього робимо запит у базу даних:

$result = $db->query( 'Select Count(*) from `users` where `login`="'.$login.'"');

Записуємо уже дані в змінну $row за допомогою методу fetch_row():

$row = $result->fetch_row( 'Select Count(*) from `users` where `login`='.$login);

А тепер перевіряємо чи є такий користувач:

if($row[0] == 0){
    /*Код після цієї перевірки*/
}

Якщо все-таки знайшовся користувач, то можна за допомогою else{} вивести якусь помилку. В тілі цієї перевірки ми додаємо ще одну перевірку - перевірку на співпадіння паролів:

if($password == $repassword){
    /*Код після цієї перевірки*/
}

Тепер потрібно згенерувати спеціальни access_token. Ось приклад:

$access_token = md5(time().$password.$login);

Після цього ми можемо вносити нового користувача в базу даних:

$db->query('INSERT INTO `users` (`login`,`password`,`access_token`) VALUES ("'.$login.'","'.md5($password).'","'.$access_token.'")')

Все користувач успішно зареєстрований! Ось весь код:

$login = $_POST['login'];
$password = $_POST['password'];
$repassword = $_POST['repassword'];
$db = new mysqli('host','user','password','database');
$result = $db->query( 'Select Count(*) from `users` where `login`="'.$login.'"');
$row = $result->fetch_row( 'Select Count(*) from `users` where `login`='.$login);
if($row[0] == 0){
    if($password == $repassword){
        $access_token = md5(time().$password.$login);
        $db->query('INSERT INTO `users` (`login`,`password`,`access_token`) VALUES ("'.$login.'","'.md5($password).'","'.$access_token.'")');
    }
}

Вхід

Коли користувач уже зареєстрований, то йому потрібно дати можливість для входу на сайт. Для початку потрібно перевірити чи існує користувач з такими даними, які він ввів. У змінних $login, $password будуть записані дані, які ввів користувач при вході. Тепер сам код перевірки:

$result = $db->query('Select * from `users` where `login`="'.$login.'" and `password`="'.md5($password).");
$rows = $result->num_rows;
if($rows === 1){
   /*Код після цієї перевірки*/
}

Тепер потрібно створити сесію, в якій потрібно записати access_token для подальшого використання:

$row = $result->fetch_array();
$_SESSION['login'] = $row['access_token'];
Не забудьте оголосити session_start() у початку файлу!

Ось весь код:

session_start();
$login = $_POST['login'];
$password = $_POST['password'];
$db = new mysqli('host','user','password','database');
$result = $db->query('Select * from `users` where `login`="'.$login.'" and `password`="'.md5($password).");
$rows = $result->num_rows;
if($rows === 1){
    $row = $result->fetch_array();
    $_SESSION['login'] = $row['access_token'];
}

Ось і все! У цій короткій статті ми розлянули як зробити примітивну реєстрацію і авторизацію на сайті. Ви можете до реєстрації додавати ще інші поля і відповідно перевіряти їх.

Посилання:

Клас mysqli - php.net/manual/en/class.mysqli.php
Сесії - php.net/manual/en/book.session.php
Чат в телеграмі - t.me
Не забувай написати коментар і поширити посилання в соц. мережах за допомогою кнопок нижче! Дякую за увагу!

Коментарі(2)

AenelayJed
18/08/2018 02:05
Torsion bras de quelqu'un est comment dur votre sang pousse contre les parois de vos arteres lorsque votre coeur sentiment pompe le sang. Arteres sont les tubes qui transportent prendre offre sang loin de votre coeur. Chaque culture votre determin
Ігор
26/09/2017 00:31
Просто і цікаво, дякую.