アクセスしてきたIPアドレスが、サブネットマスクを含んだ指定のIPアドレスに該当するものかどうかを判断します。
$accept = '203.0.113.0/24';
$remote_ip = $_SERVER['REMOTE_ADDR'];
list($accept_ip, $mask) = explode('/', $accept);
$accept_long = ip2long($accept_ip) >> (32 - $mask);
$remote_long = ip2long($remote_ip) >> (32 - $mask);
if ($accept_long == $remote_long) {
echo 'acceptable';
} else {
echo 'not acceptable';
}
ip2long()
で変換したものをビットシフトし、サブネットマスク部分同士(上の例だと上位24ビット)が同じかどうかを比較しています。