2017-07-29 90 views
2

我的PHP腳本$_SERVER ['REMOTE_ADDR']回報阿迪我的服務器的IP不訪問者IP

$temps_session =15; 
$temps_actuel= date("U"); 
$user_ip=$_SERVER['REMOTE_ADDR']; 
$req_ip_exist = $bdd->prepare('SELECT * FROM `online` WHERE `user_ip`=?'); 
$req_ip_exist ->execute(array($user_ip)); 
$ip_exist=$req_ip_exist->rowCount(); 
if ($ip_exist==0) { 
    $add_ip =$bdd->prepare('INSERT INTO `online` (`user_ip`,`time`) VALUES (?,?)'); 
    $add_ip->execute(array($user_ip,$temps_actuel)); 

}else{ 
    $update_ip= $bdd->prepare('UPDATE `online` SET `time`=? WHERE 
`user_ip`=?'); 
    $update_ip->execute(array($temps_actuel,$user_ip)); 
} 
$session_delete_time=$temps_actuel-$temps_session; 
$del_ip=$bdd->prepare('DELETE FROM online WHERE `time`<?'); 
$del_ip->execute(array($session_delete_time)); 
$show_user_nbr= $bdd->query('SELECT * FROM online'); 
$user_nbr = $show_use 
r_nbr->rowCount(); 
+0

請粘貼你的代碼在這裏,而不是image.Please檢查[如何問一個好問題,因此](https://stackoverflow.com/help/how-to-ask) –

+0

有問題,而不是評論。 – Andreas

+0

請更新您的第一篇文章。您可以使用'code'應答器以很好的方式顯示您的代碼 – sheplu

回答

-1

您可以使用此功能

function getRealIpAddr() 
{ 
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) //check ip from share internet 
    { 
     $ip=$_SERVER['HTTP_CLIENT_IP']; 
    } 
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //to check ip is pass from proxy 
    { 
     $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 
    else 
    { 
     $ip=$_SERVER['REMOTE_ADDR']; 
    } 
    return $ip; 
} 

$ipaddr = getRealIpAddr(); 
+1

不,不這樣做。 'Http-Client-Ip'和'X-Forwarded-For'頭文件可以由客戶端發送,並且可以包含任何東西。 (可能甚至不是IP地址。) – duskwuff

+0

@duskwuff如果OP位於他們自己控制的代理(Cloudflare,HAProxy等)之後,他們*可能*能夠信任「X-Forwarded-For」。不過,最好只在'_ _ SERVER ['REMOTE_ADDR']'與代理的內部IP匹配時才相信它。 – ceejayoz

+1

@ceejayoz對。我的觀點是,不要盲目地信任隨機的HTTP頭,因爲你看到堆棧溢出的一些代碼。 – duskwuff

相關問題