Maison  >  Article  >  développement back-end  >  Comment limiter l'accès IP et les délais de soumission en PHP

Comment limiter l'accès IP et les délais de soumission en PHP

墨辰丷
墨辰丷original
2018-05-19 13:33:132280parcourir

Cet article présente principalement la méthode de limitation des temps d'accès IP et de soumission en PHP, impliquant l'acquisition et le jugement par PHP des adresses IP des clients, et les compétences opérationnelles associées telles que l'enregistrement du nombre de temps d'accès IP combinés avec la session Les amis dans le besoin peuvent. référez-vous à lui

L'exemple de cet article décrit la méthode de limitation de l'accès IP et des délais de soumission en PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

1Principe

Le nombre de soumissions doit être écrit au. base de données, par exemple, lorsqu'un utilisateur se connecte, lorsqu'il fait une erreur, oubliez d'écrire le nombre d'erreurs 1 dans la base de données et l'heure de l'erreur, et écrivez 2 s'il y a à nouveau une erreur lorsqu'elle atteint 5. fois, il indique qu'aucune connexion n'est autorisée. Veuillez réessayer demain, puis utilisez DateDiff pour calculer l'heure d'erreur et l'heure now(), si elle est supérieure à 24, laissez-le réessayer.

Il est relativement simple de bloquer l'IP, notamment de déconnecter l'IP.

Parlons d'abord de la situation d'ouverture du segment IP : retirez d'abord l'IP à laquelle le client accède. pour la commodité de l'explication, IP192.168.6 est défini .2

Maintenant, nous voulons ouvrir le segment IP 192.168.*.* Veuillez nous donner un code plus facile à comprendre :

<.>

url=split(ip,".") &#39;这里的ip为客户端IP
fsip="192.168.*.*"  &#39;允许的段,可以从数据库取出,也可以这么定义
fip=split(fsip,".")
if fip(0)=url(0) and fip(1)=url(1) then
response.write "您的IP被封"
else response.write "可以通过"
end if

En fait, bannir une IP est la même que la méthode ci-dessus. Ou supprimez simplement la comparaison directe entre l'adresse IP et le client de la base de données.

Généralement, le segment IP dans la base de données est réglé sur double précision, alors ceux-ci sont nécessaires :

if Request.ServerVariables("HTTP_X_FORWARDED_FOR")="" then
IP=Request.ServerVariables("REMOTE_ADDR")
else
IP=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
end if
sip=IP
cip=split(ip,".")
ip=256*256*256*cip(0)+256*256*cip(1)+256*cip(2)+cip(3)-1

La situation ci-dessus Ils sont tous en termes d'opérations de base de données et n'impliquent pas de cookies, etc.

En fait, bloquer l'IP n'est pas très idéal et affectera des personnes innocentes. La raison pertinente peut être que l'IP dynamique s'échappe.

2. Exemple d'encapsulation

<?php
class IP{ //获取客户IP地址
  function getIpAdr(&$ip){
    $ip1=getenv("HTTP_X_FORWARDED_FOR");
    $ip2=getenv("HTTP_CLIENT_IP");
    $ip3=getenv("REMOTE_ADDR");
    if($ip1&&$ip1!=&#39;unknow&#39;)
      $ip=$ip1; else if($ip2&&$ip2!=&#39;unknow&#39;)
      $ip=$ip2; else if($ip3&&$ip3!=&#39;unknow&#39;)
      $ip=$ip3; else
      $ip=&#39;127.0.0.1&#39;;
  }
}
function get_netip($myip){ //只留客户IP地址的前三位
  $temp=explode(".",$myip);
  $netip.=$temp[0];
  $netip.=".";
  $netip.=$temp[1];
  $netip.=".";
  $netip.=$temp[2];
  return $netip;
}
$filename="test.ini";  //定义操作文件
$ip_lib=file($filename); //读取文件数据到数组中
$allow=0;
$IP=new IP;
$thisip="";
$IP->getIpAdr(&$thisip);
$thenetip=get_netip($thisip);
for ($i=0;$i<count($ip_lib);$i++){
  if(ereg($thenetip,$ip_lib[$i])){
    $allow=1;
    break;
  }
}
if ($allow==1)
{
  echo "验证通过";
} else {
  echo "<script>location.href=&#39;Error.php&#39;;</script>";
}

3. Nombre de fois

1. La page a d'abord besoin de session_start() ; 2. Faites un jugement lorsque vous cliquez pour vous connecter. S'il est déterminé que le mot de passe saisi par l'utilisateur est incorrect

if(用户的密码是错误的){
  if(!empty($_SESSION[&#39;login_error&#39;])){
    if($_SESSION[&#39;login_error&#39;] == 3){
      exit("这里已经是第三次了");
    } else{
      $_SESSION[&#39;login_error&#39;] = $_SESSION[&#39;login_error&#39;]++;
    }
  } else{
    $_SESSION[&#39;login_error&#39;] = 1;
  }
}

Recommandations associées :

Implémentation de PHP pour limiter l'accès IP et le partage de code du nombre de soumissions

Partagez comment limiter l'accès IP et le nombre de soumissions en php

phpComment limiter l'IPplage d'adresses

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn