✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як створити систему реєстрації PHP для вашого веб-сайту

69

Ви хочете інтегрувати систему реєстрації 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, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі