Maison > développement back-end > tutoriel php > Comment utiliser PHP pour écrire un système de connexion et d'enregistrement sécurisé avec fonction de vérification des e-mails ?

Comment utiliser PHP pour écrire un système de connexion et d'enregistrement sécurisé avec fonction de vérification des e-mails ?

WBOY
Libérer: 2023-08-18 11:58:01
original
1491 Les gens l'ont consulté

Comment utiliser PHP pour écrire un système de connexion et denregistrement sécurisé avec fonction de vérification des e-mails ?

Comment utiliser PHP pour écrire un système de connexion et d'inscription sécurisé avec fonction de vérification des e-mails ?

À l'ère d'Internet, la sécurité est l'aspect qui préoccupe le plus les utilisateurs lorsqu'il s'agit de sites Web et d'applications en ligne. Afin de protéger la sécurité des comptes et des informations des utilisateurs, nous devons ajouter certaines fonctionnalités de sécurité au système de connexion et d'enregistrement, telles que la vérification des e-mails. Cet article explique comment utiliser PHP pour écrire un système de connexion et d'enregistrement sécurisé avec fonction de vérification des e-mails.

  1. Créer une base de données

Tout d'abord, nous devons créer une base de données pour stocker les informations sur les utilisateurs. À l'aide de la base de données MySQL, créez une table de données nommée « utilisateurs » contenant les champs suivants : identifiant, nom d'utilisateur, email, mot de passe et vérifié.

CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
verified INT(1) NOT NULL DEFAULT 0
);
Copier après la connexion
  1. Fonction d'enregistrement

Écrivez le code PHP pour la fonction d'enregistrement. Une fois que l'utilisateur a rempli le formulaire d'inscription et l'a soumis, nous devons vérifier les informations saisies par l'utilisateur et enregistrer les informations de l'utilisateur dans la base de données.

<?php
// 获取表单输入数据
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];

// 验证用户输入

// 检查用户名是否已被注册

// 检查邮箱格式是否正确

// 生成一个随机验证码字符串
$verificationCode = bin2hex(random_bytes(16));

// 将用户信息保存到数据库
$query = "INSERT INTO users (username, email, password, verification_code) VALUES ('$username', '$email', '$password', '$verificationCode')";
mysqli_query($connection, $query);

// 发送验证邮件
$to = $email;
$subject = '账号激活邮件';
$message = '请点击以下链接激活您的账号:https://example.com/verify.php?code=' . $verificationCode;
$headers = 'From: noreply@example.com' . "
" .
'Reply-To: noreply@example.com' . "
" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

// 提示用户验证邮件已发送
echo '注册成功!请检查您的邮箱并点击验证链接进行账号激活。';
?>
Copier après la connexion
  1. Fonction de validation

Écrivez du code PHP pour la fonction de validation. Lorsque l'utilisateur clique sur le lien de vérification, nous devons vérifier si le code de vérification dans le lien est valide et mettre à jour le champ « vérifié » de l'utilisateur dans la base de données à 1, indiquant que le compte a été vérifié.

<?php
$verificationCode = $_GET['code'];

// 在数据库中查找匹配的验证代码
$query = "SELECT * FROM users WHERE verification_code = '$verificationCode' LIMIT 1";
$result = mysqli_query($connection, $query);

// 如果找到匹配的验证代码,更新用户的“verified”字段
if (mysqli_num_rows($result) > 0) {
    $user = mysqli_fetch_assoc($result);
    $userId = $user['id'];

    $updateQuery = "UPDATE users SET verified = 1 WHERE id = '$userId'";
    mysqli_query($connection, $updateQuery);

    echo '邮箱验证成功!您可以登录了。';
} else {
    echo '无效的验证链接。';
}
?>
Copier après la connexion
  1. Fonction de connexion

Écrivez le code PHP pour la fonction de connexion. Une fois que l'utilisateur a rempli le formulaire de connexion et l'a soumis, nous devons vérifier si l'e-mail et le mot de passe saisis par l'utilisateur correspondent aux enregistrements de la base de données.

<?php
$email = $_POST['email'];
$password = $_POST['password'];

// 在数据库中查找匹配的邮箱和密码
$query = "SELECT * FROM users WHERE email = '$email' AND password = '$password' LIMIT 1";
$result = mysqli_query($connection, $query);

// 如果找到匹配的记录,表示登录成功
if (mysqli_num_rows($result) > 0) {
    $user = mysqli_fetch_assoc($result);
    $verified = $user['verified'];

    if ($verified) {
        echo '登录成功!';
    } else {
        echo '账号尚未激活,请检查您的邮箱并点击验证链接进行账号激活。';
    }
} else {
    echo '邮箱或密码输入错误。';
}
?>
Copier après la connexion

Grâce aux étapes ci-dessus, nous avons utilisé avec succès PHP pour écrire un système d'enregistrement de connexion sécurisé avec fonction de vérification des e-mails. Les utilisateurs doivent fournir une adresse e-mail valide lors de leur inscription et activer leur compte en cliquant sur le lien dans l'e-mail de vérification. Ce type de système peut garantir efficacement la sécurité des comptes et des informations des utilisateurs. Lorsqu'un utilisateur se connecte, nous vérifions également si le compte a été vérifié pour offrir une meilleure expérience utilisateur.

Bien sûr, dans les applications pratiques, nous devons encore améliorer le système, comme l'ajout du cryptage des mots de passe, une sortie sécurisée et d'autres fonctions, pour garantir que les informations des utilisateurs sont plus sécurisées et plus fiables. Mais ce système d’enregistrement de connexion de base nous fournit déjà un bon point de départ.

J'espère que cet article pourra vous aider à comprendre comment utiliser PHP pour écrire un système de connexion et d'enregistrement sécurisé avec fonction de vérification des e-mails. Renforcer la sécurité des sites Web et des applications est important pour protéger les utilisateurs et les données, et j'espère que vous pourrez appliquer efficacement ces connaissances dans des applications pratiques.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal