-4

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

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

<?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++;
        }
     }
   }
?>
4

3 回答 3

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.';
    }
}
于 2013-10-01T14:52:16.370 回答
0

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

所以我的解决方案:

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

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

于 2013-10-01T14:57:09.297 回答
0

如果不是,则将数据存储在变量中$_SESSION,该变量将始终具有零值。

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

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

并更改对$cookie_var_attempts变量的引用$_SESSION['attemps']

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

我想这就是你需要的吧?

于 2013-10-01T14:54:09.857 回答