Maison  >  Article  >  développement back-end  >  Comment déterminer l'échec de connexion en php

Comment déterminer l'échec de connexion en php

WBOY
WBOYoriginal
2023-05-06 13:55:07505parcourir

php, en tant que langage de script, joue un rôle essentiel dans le développement de nombreuses applications de sites Web. Dans de nombreuses applications, le système de connexion est également un élément presque indispensable. Qu'il s'agisse d'un centre commercial, d'un site de réseautage social ou d'un site Web communautaire, la connexion des utilisateurs est l'un des processus essentiels. Par conséquent, lors du développement d’une telle application, il est crucial de déterminer si la connexion a réussi ou échoué. Il s’agit de la condition principale pour protéger les informations des utilisateurs et la sécurité des applications.

Lorsqu'un utilisateur saisit un nom d'utilisateur et un mot de passe, comment déterminer si la connexion de l'utilisateur a réussi ou échoué ? Ci-dessous, je répondrai à cette question du point de vue du programme php.

  1. Vérification du formulaire

Lorsqu'un utilisateur soumet un formulaire, nous devons d'abord vérifier les données soumises par l'utilisateur pour garantir l'exactitude de la saisie du formulaire. Voici la première étape pour déterminer si l'utilisateur n'a pas réussi à se connecter. Nous pouvons implémenter la vérification du formulaire en écrivant le code PHP correspondant, tel que le code suivant :

if($_POST['username'] == ''){
    echo "请输入用户名";
}elseif($_POST['password'] == ''){
    echo "请输入密码";
}else{
    //验证表单通过
}

Grâce au code ci-dessus, nous pouvons déterminer si l'utilisateur a saisi le nom d'utilisateur et le mot de passe. Si l'utilisateur ne saisit pas l'un des éléments, un message d'erreur correspondant s'affichera. Cependant, il ne suffit pas de déterminer si l'utilisateur a saisi son nom d'utilisateur et son mot de passe pour déterminer si la connexion de l'utilisateur a réussi.

  1. Vérification de la base de données

Une fois que l'utilisateur a soumis le formulaire, nous devons également vérifier en arrière-plan si le nom d'utilisateur et le mot de passe de l'utilisateur sont corrects. Cela doit être vérifié en contactant la table user dans la base de données. Ici, nous supposons que le nom d'utilisateur et le mot de passe sont respectivement stockés dans les champs usernamepassword de la table user.

Après avoir établi une connexion à la base de données mysql, nous pouvons extraire le nom d'utilisateur et le mot de passe existant dans la base de données via le code suivant :

$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM 用户表格 WHERE username='$username'";
$result = mysqli_query($conn,$sql);
$row = mysqli_fetch_assoc($result);

Comparez-le ensuite avec le nom d'utilisateur et le mot de passe saisis par l'utilisateur, si le nom d'utilisateur et le mot de passe sont corrects, nous considérons que l'utilisateur s'est connecté avec succès ; sinon, si le nom d'utilisateur et le mot de passe sont incorrects, la connexion de l'utilisateur est considérée comme ayant échoué ;

if($row && $row['password']==$password){
    echo "登录成功";
}else{
    echo "登录失败";
}
  1. Ajouter des restrictions de connexion

Après avoir déterminé si la connexion de l'utilisateur a réussi, nous devons également considérer la situation dans laquelle certains utilisateurs se connectent de manière malveillante. Par exemple, si un utilisateur utilise un outil de dynamitage pour effectuer un grand nombre de tentatives de connexion invalides, cela peut entraîner une charge excessive sur le serveur. Par conséquent, nous devons également ajouter des restrictions de connexion pendant le processus de connexion pour contrôler le nombre de tentatives de connexion invalides.

Pour y parvenir, nous pouvons définir une variable de compteur dans le programme, et chaque fois qu'il y aura une tentative de connexion malveillante, le compteur sera incrémenté. Lorsque le compteur atteint la valeur définie, vous pouvez définir certaines mesures restrictives, comme interdire temporairement à l'utilisateur de se connecter pendant un certain temps.

//设定最多尝试登录次数
$max_login_times = 3;
$login_failed = false;
//获取用户输入的用户名和密码
$username = $_POST['username'];
$password = $_POST['password'];
//从数据库中获取用户名对应的密码
$sql = "SELECT * FROM `user` WHERE username='$username'";
$result = mysqli_query($conn,$sql);
$row = mysqli_fetch_assoc($result);

//如果用户输入的密码与数据库中密码不一致,或者数据库中没有该用户名
if(!$row || $row['password']!=$password){
    $login_failed = true; //登录失败
    //每次登录失败,则计数器增加一
    $count = isset($_SESSION['login_count'])?$_SESSION['login_count']:0;
    $_SESSION['login_count'] = ++$count;

    if($count>=$max_login_times){
        //登录失败次数过多,锁定用户一段时间
        $lock_time = 60*60;
        $_SESSION['lock_time'] = time()+$lock_time; //锁定时间为一小时
    }

}else{
    session_start();
    //用户登录成功
    $_SESSION['user_id']=$row['id'];
    $_SESSION['user_name']=$row['username'];
}

Le code ci-dessus est un fichier login.php très simplifié, qui complète la mise en œuvre d'un compteur d'échecs de connexion pouvant aller jusqu'à trois fois. Chaque tentative de connexion échouée augmentera le compteur de un. Lorsque le compteur atteint la valeur maximale, cette adresse IP ne pourra plus tenter de se connecter pendant un certain temps. Lorsque le mot de passe correspond au mot de passe de la base de données, la session utilisateur est créée avec succès pour une utilisation ultérieure.

En bref, quelle que soit l'application dont il s'agit, l'exactitude et la sécurité de la vérification du système de connexion des utilisateurs ont toujours été l'un des problèmes clés du développement d'applications. Ce n'est que grâce à de multiples mesures de protection telles que la vérification des formulaires, la vérification de la base de données et les restrictions de connexion que nous pouvons déterminer de manière plus complète et plus efficace les échecs de connexion des utilisateurs.

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!

Déclaration:
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