当用户输入错误的用户名和密码三次时,我使用以下代码将消息发送给管理员。
请帮我调试此代码中的问题。如何在以下代码中向管理员发送消息?
<?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++;
}
}
}
?>
答案 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方法发送电子邮件。