✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak stworzyć system rejestracji PHP dla swojej witryny?

153

Chcesz zintegrować system rejestracji PHP? W tym poście tworzymy formularz rejestracyjny, weryfikujemy e-mail z bazą danych. Po udanej rejestracji użytkownika wysyłamy link aktywacyjny na adres e-mail użytkownika. Gdy użytkownik kliknie link aktywacyjny z wiadomości e-mail, aktywujemy jego konto.

Powiedziawszy to, stwórzmy nasz system rejestracji PHP.

Utwórz tabelę użytkowników w bazie danych

Do każdego systemu rejestracji potrzebujemy tabeli bazy danych. Na podstawie zapisów w tej tabeli sprawdzamy, czy użytkownik wprowadza unikalny adres e-mail, czy nie. Jeśli dane użytkownika są unikalne i poprawne, to tylko oni mogą zarejestrować się w naszym systemie.

Uruchom poniższe zapytanie do swojej bazy danych, aby utworzyć tabelę o nazwie „użytkownicy".

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;

Utwórz formularz rejestracyjny

Jak stworzyć system rejestracji PHP dla swojej witryny?

Używamy Bootstrap Framework do projektowania naszego formularza rejestracyjnego. Utwórz plik ‘index.php’ i umieść w nim poniższy kod.

<!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>

Powyższy kod wyświetli formularz rejestracji po uruchomieniu pliku ‘index.php’. Obserwujesz zmienną $arr_message[‘msg’] w kodzie, który wyświetli błąd rejestracji, jeśli wystąpi. Ta zmienna jest zadeklarowana wkrótce.

Kod po stronie serwera dla systemu rejestracji PHP

Na tym etapie jesteśmy gotowi z formularzem rejestracji i tabelą bazy danych. Następnie na formularzu zgłoszeniowym musimy napisać kod PHP, który sprawdza, czy e-mail już istnieje w bazie danych. Jeśli e-mail istnieje, wyrzucamy komunikat o błędzie. Jeśli wszystkie dane są poprawne, wstawiamy dane użytkownika do bazy danych i wysyłamy link aktywacyjny na podany przez niego adres e-mail.

Utwórz plik ‘config.php’, w którym przechowujemy poświadczenia bazy danych.

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

W naszym ‘index.php’ przed rozpoczęciem tagu html dodaj poniższy kod.

<?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.',
            ];
        }
    }
}
?>

Tutaj podczas przechowywania hasła używamy metody PHP md5, zakładając, że zapisałeś hasło przy użyciu tego algorytmu.

Plik Activate.php do aktywacji konta

Teraz nadszedł czas na utworzenie pliku ‘activate.php’. Ten plik obsługuje kod aktywacyjny konta. Piszemy kod, aby aktywować konto użytkownika, jeśli adres URL zawiera poprawny klucz aktywacyjny.

Plik ‘activate.php’ zawiera poniższy kod.

<?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.',
    ];
}
?>

Aby wyświetlić komunikat o powodzeniu/błędzie w pliku ‘activate.php’ dodaj w nim poniższy kod 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>

Możesz również przeczytać nasz powiązany artykuł na temat tworzenia systemu logowania PHP.

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów