Skip to content
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

Liste des méthodes

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).

Usage de base

Toutes les méthodes sont statiques.

  1. 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;
  1. 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.");
}

Sécurité & Performance

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.");
}

Clone this wiki locally