...
WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Как создать систему входа на PHP для вашего сайта

318

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

Я предполагаю, что в целях обучения вы используете хэш md5 для хранения пароля. Я бы написал код с учетом хеша строки md5. Возможно, вы используете другой алгоритм. В этом случае вам необходимо изменить запрос в соответствии с вашим алгоритмом.

Чтобы интегрировать поток входа в систему, нам нужна таблица базы данных, в которой хранятся данные пользователя. По этой таблице мы проверяем, ввел ли пользователь правильные учетные данные или нет. Если учетные данные пользователя верны, то только они должны иметь доступ к защищенным страницам.

В моем случае я создал таблицу «пользователей» и добавил несколько фиктивных записей. Я также добавил столбец «Статус», который будет использоваться, чтобы узнать, активна ли учетная запись или нет. Этот столбец имеет тип данных ENUM со значениями 0 и 1.

  • 1: Аккаунт активен
  • 0: Аккаунт неактивен

Как создать систему входа на PHP для вашего сайта

Создать форму входа

Для начала давайте создадим форму входа, где пользователи могут вводить свои учетные данные. Я использую платформу Bootstrap для создания формы входа. Мой index.phpфайл содержит приведенный ниже код.

<!DOCTYPE html>
<html>
    <head>
        <title>Login Form</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-6">
                    <h3>Login Form</h3>
                    <?php if(!empty($error_message)) { ?>
                        <div class="alert alert-danger"><?php echo $error_message; ?></div>
                    <?php } ?>
                    <form method="post">
                        <div class="form-group">
                            <label for="exampleInputEmail1">Email address</label>
                            <input type="email" class="form-control" id="exampleInputEmail1" name="email" placeholder="Email" required />
                        </div>
                        <div class="form-group">
                            <label for="exampleInputPassword1">Password</label>
                            <input type="password" class="form-control" id="exampleInputPassword1" name="password" placeholder="Password" required />
                        </div>
                        <button type="submit" name="submit" class="btn btn-primary">Submit</button>
                    </form>
                </div>
            </div>
        </div>
    </body>
</html>

Приведенный выше код отобразит форму входа, как показано на снимке экрана ниже.

Как создать систему входа на PHP для вашего сайта

Я добавил $error_messageв код переменную, которая будет печатать ошибки входа в систему.

Код PHP для проверки учетных данных пользователей

Вы готовы с формой входа и таблицей базы данных. Затем при отправке формы мы должны написать PHP-код, который проверяет учетные данные пользователя по записям базы данных. Если данные верны, войдите в систему и перенаправьте пользователя на myaccount.phpстраницу.

Создайте config.phpфайл и добавьте код для подключения к базе данных.

<?php
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
 
if ($conn->connect_errno) {
    echo "Error: ". $conn->connect_error;
}
?>

Замените заполнители фактическими значениями.

Теперь в index.phpфайле перед началом тега html добавьте приведенный ниже код.

<?php
session_start();
  
require_once('config.php');
  
//if user is logged in redirect to myaccount page
if (isset($_SESSION['id'])) {
    header('Location: myaccount.php');
}
  
$error_message = '';
if (isset($_POST['submit'])) {
 
    extract($_POST);
 
    if (!empty($email) && !empty($password)) {
        $sql = "SELECT id, status FROM users WHERE email = '".$conn->real_escape_string($email)."' AND password = '".md5($conn->real_escape_string($password))."'";
        $result = $conn->query($sql);
  
        if ($result->num_rows > 0) {
            $row = $result->fetch_assoc();
            if($row['status']) {
                $_SESSION['id'] = $row['id'];
                header('Location: myaccount.php');
            } else {
                $error_message = 'Your account is not active yet.';
            }
        } else {
            $error_message = 'Incorrect email or password.';
        }
    } else {
        $error_message = 'Please enter email and password.';
    }
}
?>

Здесь, в коде, при проверке пароля я использовал PHP-метод md5, предполагая, что вы сохранили пароль, используя этот алгоритм.

Код выхода

Следующая часть – это добавление кода для выхода пользователя из системы. Для этого создайте myaccount.phpфайл. Еще одна вещь, необходимая для обработки: только зарегистрированные пользователи должны получить доступ к этой странице.

myaccount.php

<?php
session_start();
 
if (isset($_GET['action']) && ('logout' == $_GET['action'])) {
    unset($_SESSION['id']);
}
 
if (isset($_SESSION['id'])) {
    ?>
    <h3>Welcome User! <a href="?action=logout">Logout</a></h3>
    <?php
} else { //redirect to login page
    header('Location: index.php');
}
?>

Используя сеанс PHP, мы выясняем, давать ли доступ к этой странице или нет. Если сеанс не установлен, перенаправьте пользователя на страницу входа.

Надеюсь, вы понимаете основы построения системы входа в систему на PHP. Пожалуйста, поделитесь своими мыслями и предложениями в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее