Функция getip () нуждается в обновлении для большей безопасности и точности

Нужны предложения по обновлению следующей функции для определения IP-адреса, чтобы быть более точным и безопасным от внедрения SQL через пользовательский ввод

function getip(){
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
}else if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
$ip = strtolower($ip);
if(substr_count($ip,"unkown")>0){
$ip=$_SERVER['REMOTE_ADDR'];
}
$ip = htmlspecialchars($ip);
$ip = mysql_real_escape_string($ip);
return $ip;

0

Решение

Запустите это редактирование OnLine

function getip()
{
$keyname_ip_arr = array('HTTP_X_FORWARDED_FOR', 'HTTP_REMOTE_ADDR_REAL', 'HTTP_CLIENT_IP', 'HTTP_X_REAL_IP', 'REMOTE_ADDR');
foreach ($keyname_ip_arr as $keyname_ip) {
if (!empty($_SERVER[$keyname_ip])) {
$ip = $_SERVER[$keyname_ip];
if (strstr($ip, ',')) {
$ips = explode(',', $ip);
foreach ($ips as $ip)
{
if(filter_var(trim($ip), FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)) break(2);
}
}
elseif(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE)) break;
}
}
return $ip;
list($ip1,$ip2,$ip3,$ip4) = explode('.',$ip);
return $ip1.'.'.$ip2.'.'.$ip3.'.0';
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]