Comment faire pour rediriger toute une gamme/bloc d'adresses IP avec le PHP?
Je suis en utilisant le fragment de code suivant pour rediriger un tableau d'adresses IP. Je me demandais comment j'allais sur l'ajout d'un ensemble de la gamme/bloc d'adresses IP à mon dissallowed tableau...
<?php //Let's redirect certain IP addresses to a "Page Not Found"
$disallowed = array("76.105.99.106");
$ip = $_SERVER['REMOTE_ADDR'];
if(in_array($ip, $disallowed)) {
header("Location: http://google.com");
exit;
}
?>
J'ai essayé d'utiliser "76.105.99.*", "76.105.99", "76.105.99.0-76.105.99.255" sans un peu de chance.
- Je besoin pour utiliser PHP plutôt que mod_rewrite et .htaccess pour d'autres raisons.
- Je pense que vous auriez besoin de revoir votre comparaison de code pour comprendre l'abréviation que vous allez utiliser.
Vous devez vous connecter pour publier un commentaire.
Essayer le
substr
fonction:Voici un exemple de la façon dont vous pouvez le vérifier réseau/masque de combinaison:
C'est mieux que d'utiliser une chaîne de caractères en fonction de correspondance que vous pouvez tester d'autres masques qui s'alignent dans un octet, par exemple, a /20 bloc d'adresses ip
<?php $network=ip2long("124.195.223.98"); $mask=ip2long("255.255.255.0"); $remote=ip2long($_SERVER['REMOTE_ADDR']); if ((($remote & $mask) == $network)){ echo "match"; }else{ echo "No match"; } ?>
Il dit toujours pas de match. Note: Mon IP est 124.195.223.99Vous pouvez aborder le problème d'une manière différente.
Si vous souhaitez interdire 76.105.99.* vous pourriez faire:
Exactement qui vous intéresse le blocage? Vous pouvez utiliser PHP ou apache pour bloquer (ou autoriser) d'un groupe d'adresses IP spécifiques.
Si vous êtes intéressé dans le blocage de gens de tout un pays par exemple, il existe des outils qui vous donnent les adresses IP que vous avez besoin de bloquer. Malheureusement, il n'est pas aussi simple que juste de préciser une fourchette.
Découvrez http://www.blockacountry.com/ qui génère un tas d'adresses ip, vous pouvez coller dans votre .htaccess pour bloquer l'ensemble du pays.
Ce que vous devez faire est de faire un test pour voir si une adresse particulière vit à l'intérieur d'un particulier de la plage d'adresses définie par le CIDR
Ainsi, par exemple, vous devez être en mesure de dire
est 192.168.1.5
à l'intérieur de
192.168.1.0/24
Que la fonction est facile à écrire, en supposant que vous avez quelques outils de base pour faire CIDR travail.
En supposant que vous êtes sur un système 32 bits, cette classe http://snipplr.com/view/15557/cidr-class-for-ipv4/
Attention à la IPisWithinCIDR fonction
Il serait préférable de le faire dans apache(ou tout autre serveur)
Je crois que vous aurez besoin pour créer une boucle for pour ajouter chaque adresse IP (dans les limites) de votre tableau.
pseudo-code
Ci-dessous est une URL montrant quelque chose d'assez similaire à ce que M. Dixon et Ameer sont en train de discuter:
http://www.blackdog.ie/blog/blocking-ip-ranges-with-php/
Espère que cette aide.
Respectueusement,
Wil