Validating IP Addresses
If you have a form that accepts IP addresses, you might want to validate it to make sure it really is a valid IP address. I’m talking about IPv4 since IPv6 is not yet universally implemented. A valid IPv4 IP addresses should fall between the numbers 0.0.0.0 and 255.255.255.255. In this example, we will use a regular expression and a pattern matching function in PHP to see if it’s a real IP address.
First things first, we need to sanitize the input. We can use the following PHP functions. We will assign the sanitized input to a variable.
<pre lang="php">
// sanitize input from form
$ip_address = addslashes(htmlspecialchars(strip_tags(trim($_POST['ip_address']))));
This is the regular expression that we will use that accepts valid IP addresses.
<pre lang="php">
// the regular expression for valid ip addresses
$reg_ex = '/^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))*$/';
We will now compare the two variables: $reg_ex and $ip_address to see if IP address passes the test.
<pre lang="php">
// test input against the regular expression
if (preg_match($reg_ex, $ip_address)) {
return TRUE; // it's a valid ip address
}
We will now place everything in a tidy function so we can use it anytime we want.
<pre lang="php">
function validate_ip_address($ip_address) {
// sanitized ip address
$clean_ip_address = addslashes(htmlspecialchars(strip_tags(trim($ip_address))));
// the regular expression for valid ip addresses
$reg_ex = '/^((?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))*$/';
// test input against the regular expression
if (preg_match($reg_ex, $clean_ip_address)) {
return TRUE; // it's a valid ip address
}
}
Finally, it’s time to call our function.
<pre lang="php">
$ip_address = $_POST['ip_address'];
if (validate_ip_address($ip_address)) {
echo "It's a valid IP address!";
}