login.php 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. header("Content-type=text/json;charset=UTF-8");
  3. $conn = mysqli_connect("localhost", "root", "R.!a@O&t9CjweWLSTr", "centralized_control_db") or die("mysql connect error!");
  4. mysqli_query($conn, "set character set 'utf8'");
  5. date_default_timezone_set('Asia/Shanghai');
  6. $dataP = file_get_contents("php://input");
  7. $arr = json_decode($dataP);
  8. //$user_name = "2";
  9. //$password = "eccbc87e4b5ce2fe28308fd9f2a7baf3";
  10. //$ip = "221.0.237.194";
  11. $user_name = "'" . $arr->userName . "'";
  12. $password = "'" . $arr->password . "'";
  13. $ip = "'" . $arr->ip . "'";
  14. # 判断访问IP是否在白名单或黑名单中
  15. $real_data = null;
  16. $black_white_sql = $conn->query("SELECT `lists` FROM `user_list` WHERE `ip` = $ip;");
  17. while($row1 = mysqli_fetch_array($black_white_sql, MYSQLI_ASSOC)) {
  18. $real_data = $row1["lists"];
  19. }
  20. if ( $real_data=='1' ) {
  21. // ip在黑名单中,禁止登录
  22. $res_info = "失败5次,进入黑名单";
  23. } else {
  24. // ip不在黑名单中,判断账号密码是否正确
  25. $user_pw_sql = mysqli_query($conn, "SELECT * FROM user WHERE user_name = $user_name AND password = $password;");
  26. $result = $user_pw_sql->num_rows;
  27. if ($result == 1) {
  28. // 密码正确,允许登录
  29. $res_info = "success";
  30. }
  31. else {
  32. // 密码错误,判断是否需要增加登录失败的次数
  33. if ( $real_data == '0' ) {
  34. // ip在白名单中,不需要增加登录失败的次数
  35. $res_info = "账号或密码错误,请重新登录";
  36. } elseif ( is_null($real_data) ) {
  37. // ip不在白名单中,登录失败次数+1或者加入黑名单
  38. $wrong_sql = mysqli_query($conn, "SELECT `id`, `times` FROM user_var WHERE `ip` = $ip;");
  39. $result_var = $wrong_sql->num_rows;
  40. if ( $result_var=='0' ) {
  41. // ip第一次登录失败
  42. mysqli_query($conn, "INSERT INTO `user_var` (`ip`) VALUES ($ip);");
  43. $res_info = "第1次登录失败,超过5次将进入黑名单";
  44. } elseif ( $result_var=='1' ) {
  45. while($row2 = mysqli_fetch_array($wrong_sql, MYSQLI_ASSOC)) {
  46. $id = $row2["id"];
  47. $times = $row2["times"] + 1;
  48. }
  49. if ( $times == 5 ) {
  50. // 已经失败5次,加入黑名单
  51. mysqli_query($conn, "INSERT INTO `user_list` (`ip`, `lists`) VALUES ($ip, 1);");
  52. mysqli_query($conn, "DELETE FROM `user_var` WHERE ((`id` = $id));");
  53. $res_info = $times."次登录失败,进入黑名单";
  54. } else {
  55. // 登录失败次数+1
  56. mysqli_query($conn, "UPDATE `user_var` SET `times`=$times WHERE `id`=$id;");
  57. $res_info = "第".$times."次登录失败,超过5次将进入黑名单";
  58. }
  59. }
  60. }
  61. }
  62. }
  63. $res["result"] = $res_info;
  64. echo json_encode($res);
  65. $conn->close();
  66. ?>