Webontwikkeling

PHP de juiste manier: IP validatie

Wat is een IP-adres?

Een IP-adres is het communicatie nummer van een computer, waarmee deze bereikbaar is door andere computers binnen het netwerk. Op dit moment zijn er twee soorten IP-protocollen, namelijk IPv4 en IPv6. Veel websites en applicaties houden alleen rekening met IPv4 adressen, wat vandaag de dag niet meer aan te raden is vanwege de omschakeling naar het IPv6 protocol. In dit artikel ga ik in over op welke manier je een IP adres kan valideren en met welke spelregels er rekening gehouden moet worden  om de website of applicatie geschikt te maken voor beide protocollen.

Wat is de lengte van een IP-adres?

Zoals de meeste meeste mensen intussen wel weten is de lengte van een IPv4 adres 15 tekens lang. De lengte van een IPv6 adres is 39 tekens, echter moeten we rekening houden met “IPv4-mapped IPv6 adressen” waardoor de lengte uitkomt op maximaal 45 tekens.

Hoe valideer ik een IP-adres?

Voor de validatie van het IP-adres zijn meerdere technieken, veelal word er gebruik gemaakt van validatie in combinatie met regex.

$valid = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $ipAddres);

Echter moet je de vraag stellen, waarom zou je gebruik willen maken van reguliere expressie als PHP hier zelf een oplossing voor beschikbaar heeft. De beste manier is om de onderstaande functie te gebruiken voor de validatie van IP adressen. Er word namelijk automatisch rekening gehouden met IPv4 en IPv6 adressen.

$isValid = filter_var($ip, FILTER_VALIDATE_IP));

Mocht je om wat voor reden toch besluiten om te valideren op alleen IPv4 of  IPv6 adressen. Dan kan er gebruik worden gemaakt van onderstaande functies.

// validate IPv4
$isValid = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4));

// validate IPv6
$isValid = filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6));

Conclusie

Zoals aangeven is het het beste om de validatie van IP-adressen over te laten aan PHP en geen gebruik te maken van reguliere expressies. Hopelijk ben je weer wat wijzer geworden. Ideeën voor een nieuwe aflevering van deze serie zijn altijd welkom.