...
Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Comment créer un système d’enregistrement PHP pour votre site Web

159

Vous cherchez à intégrer le système d’enregistrement PHP? Dans cet article, nous créons un formulaire d’inscription, validons l’e-mail par rapport à la base de données. Lors de l’enregistrement réussi d’un utilisateur, nous envoyons un lien d’activation à l’e-mail de l’utilisateur. Une fois que l’utilisateur clique sur le lien d’activation de l’e-mail, nous activerons son compte.

Cela dit, créons notre système d’enregistrement PHP.

Créer une table d’utilisateurs dans la base de données

Pour chaque système d’enregistrement, nous avons besoin d’une table de base de données. Par rapport à ces enregistrements de table, nous vérifions si l’utilisateur saisit ou non une adresse e-mail unique. Si les détails de l’utilisateur sont uniques et corrects, ils sont les seuls à pouvoir s’inscrire à notre système.

Exécutez la requête ci-dessous dans votre base de données pour créer la table appelée « utilisateurs ».

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;

Créer un formulaire d’inscription

Comment créer un système d'enregistrement PHP pour votre site Web

Nous utilisons Bootstrap Framework pour concevoir notre formulaire d’inscription. Créez un fichier ‘index.php’ et placez-y le code ci-dessous.

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

Le code ci-dessus affichera le formulaire d’inscription lorsque nous exécuterons le fichier ‘index.php’. Vous observez la variable $arr_message[‘msg’] dans le code qui affichera l’erreur d’inscription le cas échéant. Cette variable est déclarée sous peu.

Code côté serveur pour le système d’enregistrement PHP

À ce stade, nous sommes prêts avec le formulaire d’inscription et la table de base de données. Ensuite, sur le formulaire soumis, nous devons écrire du code PHP qui vérifie si le courrier électronique existe déjà dans la base de données. Si le courrier électronique existe, nous lançons le message d’erreur. Si tous les détails sont corrects, nous insérons les détails de l’utilisateur dans la base de données et envoyons un lien d’activation à l’adresse e-mail fournie.

Créez un fichier ‘config.php’ où nous stockons les informations d’identification de la base de données.

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

Dans notre ‘index.php’ avant le début de la balise html, ajoutez le code ci-dessous.

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

Ici, lors du stockage du mot de passe, nous utilisons la méthode PHP md5 en supposant que vous avez stocké le mot de passe en utilisant cet algorithme.

Fichier activate.php pour activer votre compte

Maintenant, il est temps de créer le fichier ‘activate.php’. Ce fichier gère le code d’activation du compte. Nous écrivons un code pour activer le compte utilisateur si l’URL contient une clé d’activation correcte.

Le fichier ‘activate.php’ contient le code ci-dessous.

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

Pour afficher le message de réussite/d’erreur sur le fichier ‘activate.php’, ajoutez-y le code HTML ci-dessous.

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

Vous pouvez également lire notre article connexe sur Comment créer un système de connexion PHP.

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails