2017-07-29 4 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

ここにあなたのコードを貼り付けてください。画像はありません。[よくある質問をどうやって尋ねるのですか](https://stackoverflow.com/help/how-to-ask) –

+0

コメントはありません。 – Andreas

+0

最初の投稿を更新してください。あなたのコードを良い方法で表示するために ''コード '' baliseを使うことができます – 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

関連する問題