Изредка попадаются хостеры у которых не включено раширение filter в котором наиполезнейшая функция filter_var(). Fatal error: Call to undefined function filter_var()
На случай если она используется только для фильтрации IP есть соблазн заменить ее inet_pton(). Но тут другие грабли, в случае неформатного ip эта функция выдает Warning: inet_pton(): Unrecognized address .
Решаем простым хаком
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
if(!function_exists('filter_var')){ function filter_var($ip, $v){ return inet_pton_replace($ip) !== false; } function inet_pton_replace($ip){ # ipv4 if (strpos($ip, '.') !== FALSE) { if (strpos($ip, ':') === FALSE) $ip = pack('N',ip2long($ip)); else { $ip = explode(':',$ip); $ip = pack('N',ip2long($ip[count($ip)-1])); } } # ipv6 elseif (strpos($ip, ':') !== FALSE) { $ip = explode(':', $ip); $parts=8-count($ip); $res='';$replaced=0; foreach ($ip as $seg) { if ($seg!='') $res .= str_pad($seg, 4, '0', STR_PAD_LEFT); elseif ($replaced==0) { for ($i=0;$i<=$parts;$i++) $res.='0000'; $replaced=1; } elseif ($replaced==1) $res.='0000'; } $ip = pack('H'.strlen($res), $res); } return $ip; } } |
Свежие комментарии