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

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

47

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

Сказав это, давайте создадим нашу систему регистрации PHP.

Создать таблицу пользователей в базе данных

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

Выполните приведенный ниже запрос к своей базе данных, чтобы создать таблицу под названием «пользователи».

CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `fullname` varchar(255) NOT NULL,
 `email` varchar(255) NOT NULL,
 `password` varchar(255) NOT NULL,
 `activation_key` varchar(255) NOT NULL,
 `status` enum('0','1') NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`)) ENGINE=MyISAM;

Создать регистрационную форму

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

Мы используем Bootstrap Framework для разработки нашей регистрационной формы. Создайте файл index.php и поместите в него приведенный ниже код.

<!DOCTYPE html>
<html>
    <head>
        <title>Registration Form</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" />
    </head>
    <body>
        <div class="container">
            <div class="row">
                <div class="col-md-6">
                    <h3>Registration Form</h3>
                    <?php if(!empty($arr_message['msg'])) { ?>
                        <div class="alert <?php echo $arr_message['class']; ?>"><?php echo $arr_message['msg']; ?></div>
                    <?php } ?>
                    <form method="post">
                        <div class="form-group">
                            <label for="exampleInputFullname">Full Name</label>
                            <input type="text" class="form-control" id="exampleInputFullname" name="fullname" placeholder="Full Name" value="<?php if(isset($fullname)) echo $fullname; ?>" required>
                        </div>
                        <div class="form-group">
                            <label for="exampleInputEmail1">Email address</label>
                            <input type="email" class="form-control" id="exampleInputEmail1" name="email" placeholder="Email" value="<?php if(isset($email)) echo $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>
                        <div class="form-group">
                            <label for="exampleInputPassword2">Confirm Password</label>
                            <input type="password" class="form-control" id="exampleInputPassword2" name="cpassword" placeholder="Confirm Password" required>
                        </div>
                        <button type="submit" name="submit" class="btn btn-default">Submit</button>
                    </form>
                </div>
            </div>
        </div>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </body>
</html>

Приведенный выше код отобразит форму регистрации, когда мы запустим файл index.php. Вы видите в коде переменную $ arr_message [‘msg’], которая выводит ошибку регистрации, если таковая имеется. Эта переменная вскоре объявлена.

Серверный код для системы регистрации PHP

На этом этапе у нас есть форма регистрации и таблица базы данных. Затем в форме отправки мы должны написать 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
require_once('config.php');
 
$arr_message = [];
if (isset($_POST['submit'])) {
 
    $_POST = array_map('trim', $_POST);
    extract($_POST);
 
    if (!empty($fullname) && !empty($email) && !empty($password)) {
         
        if ($password == $cpassword) {
            $sql = "SELECT id FROM users WHERE email = '".$conn->real_escape_string($email)."'";
            $result = $conn->query($sql);
 
            if ($result->num_rows > 0) {
                $arr_message = [
                    'class' => 'alert-danger',
                    'msg' => 'Email already exist.',
                ];
            } else {
                $email = $conn->real_escape_string($email);
                $activation_key = sha1(mt_rand(10000,99999).time().$email);
 
                $sql = "INSERT INTO users(fullname, email, password, activation_key) VALUES('".$conn->real_escape_string($fullname)."', '".$email."', '".md5($conn->real_escape_string($password))."', '".$activation_key."')";
                $conn->query($sql);
 
                //send activation link in an email
                $subject = 'Activate Your Account';
                $message = 'Hello '.ucwords($fullname).',<br> 
                            <p>Click the below link to activate your account.</p>
                            <a href="YOUR_PROJECT_URL/activate.php?key='.$activation_key.'">Activate Account</a><br><br>
                            Thanks,<br>Admin';
 
                $headers[] = 'MIME-Version: 1.0';
                $headers[] = 'Content-type: text/html; charset=iso-8859-1';
                mail($email, $subject, $message, implode("rn", $headers));
 
                $arr_message = [
                    'class' => 'alert-success',
                    'msg' => 'We have sent an activation link to your email. Please activate your account.',
                ];
                $fullname = $email = '';
            }
        } else {
            $arr_message = [
                'class' => 'alert-danger',
                'msg' => 'Password mismatch.',
            ];
        }
    }
}
?>

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

Файл activate.php для активации вашей учетной записи

Пришло время создать файл «activate.php». Этот файл обрабатывает код активации учетной записи. Мы пишем код для активации учетной записи пользователя, если URL-адрес содержит правильный ключ активации.

Файл «activate.php» содержит приведенный ниже код.

<?php
require_once('config.php');
 
if (!isset($_GET['key']) || empty($_GET['key'])) {
    header('Location:index.php');
}
 
$sql = "SELECT id, status FROM users WHERE activation_key = '".$_GET['key']."'";
$result = $conn->query($sql);
 
if ($result->num_rows > 0) {
    $row = $result->fetch_assoc();
    if ($row['status']) {
        $arr_message = [
            'class' => 'alert-success',
            'msg' => 'Your account is already activated.',
        ];
    } else {
        $sql = "UPDATE users SET status = '1' WHERE id = ".$row['id']." AND activation_key = '".$_GET['key']."'";
        $conn->query($sql);
 
        $arr_message = [
            'class' => 'alert-success',
            'msg' => 'Your account is activated. You can <a href="YOUR_PROJECT_URL/login.php">login now</a>.',
        ];
    }
} else {
    $arr_message = [
        'class' => 'alert-danger',
        'msg' => 'Invalid URL.',
    ];
}
?>

Чтобы отобразить сообщение об успехе / ошибке в файле «activate.php», добавьте в него приведенный ниже HTML-код.

<div class="container">
        <div class="row">
            <div class="col-md-6">
                <?php if(!empty($arr_message['msg'])) { ?>
                    <div class="alert <?php echo $arr_message['class']; ?>">
                        <?php echo $arr_message['msg']; ?>
                    </div>
                <?php } ?>
            </div>
        </div>
    </div>

Вы также можете прочитать нашу статью о том, как создать систему входа на PHP.

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

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