Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在尝试3次登录后阻止用户?_Php_Mysql_Session_Login_Controller - Fatal编程技术网

Php 如何在尝试3次登录后阻止用户?

Php 如何在尝试3次登录后阻止用户?,php,mysql,session,login,controller,Php,Mysql,Session,Login,Controller,如何在尝试3次登录后阻止用户 这是我的密码: session_start(); /************Connexion************/ if(isset($_POST['cnx'])){ require_once('../config.php'); $db = new DBSTOCK(); $cnx = $db->connect(); $user=$_POST['user']; $pass=$_POST['

如何在尝试3次登录后阻止用户

这是我的密码:

session_start();

        /************Connexion************/

    if(isset($_POST['cnx'])){
    require_once('../config.php');
    $db = new DBSTOCK();
    $cnx = $db->connect();
    $user=$_POST['user'];
    $pass=$_POST['pass'];
    // To protect from MySQL injection for Security purpose
    $user = strip_tags($user);
    $pass = strip_tags($pass);

    $user = stripslashes($user);
    $pass = stripslashes($pass);

    $user = mysqli_real_escape_string($cnx,$user);
    $pass = mysqli_real_escape_string($cnx,$pass);

    $q=mysqli_query($cnx,"select * from admin where user='".$user."'");

    $row = mysqli_fetch_array($q); //or die(mysqli_error($con));
    $pw = $row['pass'];//hashed password in database
    $username = $row['user'];


    if($user==$username && password_verify($pass, $pw)) {
    $_SESSION["user"]=$user;
    header("Location: ../view/accueil.php");
    }
    else{
    header("Location: ../index.php?failed=0");
    }}


        /************Deconnexion************/

         if(isset($_GET['decnx'])){

         session_destroy();
         session_unset();

         header("Location: ../index.php");
    }

我可以向代码中添加任何脚本建议,以便在连续3次登录尝试失败后阻止用户10分钟?

将以下两列添加到行中:

  • 最后一次尝试作为日期时间
  • 尝试将u计数为整数
在您的登录逻辑中,检查这两个值,如果是3或更多并且在时间范围内(例如:10分钟),然后更新last_Attention和increment Attention_count,这第二部分不是必需的,但您可能想知道这一点。如果超过10分钟,则如果通过,则将“尝试计数”设置回0;如果失败,则将“尝试计数”设置回1,并再次更新上次尝试


另外,您现在还可以知道用户最后一次登录的时间,这对于查找未使用的帐户非常有用。

有很多方法可以做到这一点。如果要阻止设备,则可以创建10分钟的cookie,并设置一个条件,如果用户名匹配,则不会访问数据库进行登录


或者,如果您想为该用户阻止任何设备,则必须保持用户状态,连续三次失败尝试将更改用户状态和被阻止的时间。但这一次,您必须检查每次登录尝试之前的阻止时间是否为10分钟。

请看一看,您最好使用服务器端锁定,而不是客户端(使用cookie),因为用户可以修改cookie。特拉维索的答案非常简单,可以说更安全你能给我一个建议吗example@baktetemiloud我只是明确地解释了该做什么,我不会为你做你的工作,如果你不能将概念转化为代码,你永远也学不到。我昨晚正在研究这个解决方案。这个解决方案比cookie好,谢谢you@baktetemiloud用户可以编辑他们的cookie,不要把它们用于任何重要的事情