PHP implémente le partage de code pour limiter l'accès IP et les délais de soumission

小云云
Libérer: 2023-03-19 22:18:02
original
1721 Les gens l'ont consulté

Cet article vous présente principalement la méthode de limitation des accès IP et des délais de soumission en PHP, qui implique l'acquisition et le jugement par PHP de l'IP de visite du client, ainsi que les compétences opérationnelles associées telles que l'enregistrement du nombre d'accès IP combinés avec le session. Les amis dans le besoin peuvent s'y référer. J'espère que cela pourra aider tout le monde.

1. Principe

Le nombre de soumissions doit être écrit dans la base de données. Par exemple, lorsqu'un utilisateur se connecte, lorsqu'il est connecté. fait une erreur. Oubliez que le nombre d'erreurs d'écriture dans la base de données est 1 et l'heure de l'erreur, et si l'erreur se reproduit, écrivez 2. Lorsqu'elle atteint 5 fois, il vous demandera de ne plus vous connecter. Veuillez réessayer demain, puis utilisez DateDiff pour calculer le temps entre l'erreur et now(). S'il est supérieur à 24, ouvrez-le simplement et laissez-le 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

Nous voulons maintenant ouvrir le segment IP de 192.168.*.* Veuillez nous donner un code plus facile à comprendre :

.

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

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é en 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
Copier après la connexion

Les situations ci-dessus sont toutes dans In les termes des opérations de base de données, les cookies, etc. ne sont pas impliqués.

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>";
}
Copier après la connexion

3.

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;
  }
}
Copier après la connexion

Recommandations associées :

PHP restreint l'accès IP, autorise uniquement l'accès IP spécifié, autorise * le caractère générique pour filtrer le didacticiel IP_PHP

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!