如何在3次尝试登录失败时向管理员发送消息

时间:2013-10-01 14:45:58

标签: php

当用户输入错误的用户名和密码三次时,我使用以下代码将消息发送给管理员。

请帮我调试此代码中的问题。如何在以下代码中向管理员发送消息?

<?php
   session_start();
   $cookie_var_attempts=0;

   if(isset($_POST['username']))
   {
     $uname=$_POST['username'];
     $password=$_POST['password'];
     mysql_connect('localhost','root','');
     mysql_select_db('gps_test1');
     $sql="select * from tbl_user where uname='$uname' and password='$password'";
     $query=mysql_query($sql);
     $no_of_rows=mysql_num_rows($query);

     if($no_of_rows==1)
     {  
        $_SESSION['username']=$uname;           
        header('location:track_map.php');               
     }                   
     else                               
     {
        if($cookie_var_attempts>=3)
        {
           echo"message is sent to admin";
        }
        else
        {   
           echo "Enter the correct username and password";   
           $cookie_var_attempts++;
        }
     }
   }
?>

3 个答案:

答案 0 :(得分:1)

您是否有关于如何发送消息的具体想法?

简单的方法是使用电子邮件。

类似的东西:

if($cookie_var_attempts>=3)
{
    $to = "soandso@domain.com";
    $subject = "Bad login";
    $body = "$body";

    if (!mail($to, $subject, $body))
    {
        echo 'Could not send email.';
    }
}

答案 1 :(得分:0)

将数据存储在$_SESSION中,否则变量将始终为零值。

例如,而不是$cookie_var_attempts=0;使用:

if (!isset($_SESSION['attemps']) $_SESSION['attemps'] = 0;

并更改对$cookie_var_attempts

$_SESSION['attemps']变量的引用

要向用户发送消息,您可以使用mail功能。

我认为这是你需要的吗?

答案 2 :(得分:0)

A)不推荐使用MYSQL_,使用mysqli或pdo B)您只是检查特定计算机是否登录失败3次,虽然对防止某些攻击有用,但它不提供太多信息,也不允许您锁定特定帐户被黑客入侵。此外,用户可以转储cookie并继续尝试。如果您也将使用该方法,请使用会话和$ _SESSION变量。

所以我的解决方案:

1)创建一个方法,验证他们尝试登录的用户是否存在。如果不存在,请不要告诉最终用户,只使用一般错误。 2)在用户表中添加一个字段,用于存储自上次登录以来不正确登录的次数,在验证用户存在后检查该数字是否大于3。为用户的每次失败登录增加此数字,在正确的登录时将其重置为0.

3)最后,如果第2步检查失败,请使用mail方法发送电子邮件。