-
Notifications
You must be signed in to change notification settings - Fork 0
IPMatcher
Gérits Aurélien edited this page Feb 13, 2026
·
1 revision
La classe IPMatcher fournit des outils de détection et de comparaison d'adresses IP. Elle supporte nativement l'IPv4, l'IPv6 et les notations CIDR (plages d'IP). Elle est indispensable pour la gestion des listes noires (Blacklist), des accès restreints (Whitelist) et la sécurité globale du framework.
Namespace : Magepattern\Component\HTTP\IPMatcher
| Méthode | Paramètres | Retour | Description |
|---|---|---|---|
| getVisitorIp() | - | string | Récupère l'IP réelle du visiteur (compatible Cloudflare/Proxy). |
| isListed(array, string) | $list, $currentIp | bool | Vérifie si une IP (ou l'IP actuelle) est présente dans une liste. |
| checkIp(string, string) | $requestIp, $subnet | bool | Compare une IP avec un sous-réseau (ex: 192.168.1.1 vs 192.168.1.0/24). |
- Détecter l'IP réelle La méthode getVisitorIp() est plus fiable que $_SERVER['REMOTE_ADDR'] car elle inspecte les headers de proxy.
use Magepattern\Component\HTTP\IPMatcher;
$ip = IPMatcher::getVisitorIp();
echo "Votre IP est : " . $ip;- Vérifier une Blacklist (IP fixe et CIDR) C'est la méthode la plus "confortable" pour bannir des utilisateurs.
$blacklist = ['1.2.3.4', '95.0.0.0/8', '2001:db8::/32'];
if (IPMatcher::isListed($blacklist)) {
die("Accès interdit.");
}Optimisation : isListed effectue d'abord une comparaison de chaîne brute (très rapide) avant de lancer les calculs binaires si elle détecte un masque CIDR (/).
Précision : La comparaison binaire (compareBinary) assure une précision parfaite au bit près, essentielle pour les réseaux IPv6 étendus.
Exemple concret : Restriction d'accès Admin
$authorized = ['127.0.0.1', '80.123.45.67']; // Vos IPs fixes
if (!IPMatcher::isListed($authorized)) {
\Magepattern\Component\HTTP\Header::setStatus(403);
exit("Seul l'administrateur peut accéder à cette zone.");
}