2017-08-24 11 views
0

ユーザー名と電子メールアドレスを入力してアカウントを作成する必要がある登録サイトがあります。サイトに1台のPC(IPアドレス1つ)の登録のみを許可する

Iサイトでは、1つのPCから1つの電子メールアドレス(1つのIPアドレス)のみを登録することができます。

別の電子メールアカウントが同じPCから登録されている場合、「あなたのPCまたはPCのIPはすでにサイトに登録されています」というメッセージが表示され、アカウントが作成されることを拒否します。

+1

今日は多くのコンピュータが単一のパブリックIPアドレスを共有しているので、これはおそらく良い考えではありません。さらに、多くのパブリックIPアドレスはコンピュータ間で再利用されます。仮定1 IPアドレス= 1のコンピュータは真ではありません。 – user3151902

+0

また、あなたはIPアドレスを偽装することができます – Akintunde007

+0

これまでに何を試しましたか? – Nima

答えて

-1
function get_client_ip() { 
    $ipaddress = ''; 
    if (getenv('HTTP_CLIENT_IP')) 
     $ipaddress = getenv('HTTP_CLIENT_IP'); 
    else if(getenv('HTTP_X_FORWARDED_FOR')) 
     $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); 
    else if(getenv('HTTP_X_FORWARDED')) 
     $ipaddress = getenv('HTTP_X_FORWARDED'); 
    else if(getenv('HTTP_FORWARDED_FOR')) 
     $ipaddress = getenv('HTTP_FORWARDED_FOR'); 
    else if(getenv('HTTP_FORWARDED')) 
     $ipaddress = getenv('HTTP_FORWARDED'); 
    else if(getenv('REMOTE_ADDR')) 
     $ipaddress = getenv('REMOTE_ADDR'); 
    else 
     $ipaddress = 'UNKNOWN'; 
    return $ipaddress; 
} 

この機能を使用して、IPアドレスを見つけてdbに保存します。登録データを保存する前に、IPが既にDBに存在するかどうかを確認します。

しかし、それは常にシングルIPとしての悪い考えは、単一のPCを意味しません。彼らは単一の発信IPですが、組織内で同じIPを使用する1000以上のシステムでもかまいません。学校、大学、企業では、通常、発信IPはほとんどなく、1000台のシステムが内部接続されています。

+0

これらのヘッダーは盲目的に使用してはなりません。クライアントによって設定され、リバースプロキシ設定以外では信頼できないようにする必要があります。それらのうちのいくつかは私が一度も使ったことがない( "Forwarded"?)。 – duskwuff

+0

@duskwuff FORWARDEDヘッダーはプロキシサーバーによって設定されます。彼らはクライアントとサーバーの間のプロキシサーバーの場合、サーバーはクライアントアドレスの代わりにプロキシサーバーアドレスを受信するためです。したがって、一部のプロキシサーバーは、元のクライアントIPを 'FORWARDED'ヘッダーに保持するために使用されました。 –

+0

@duskwuffユーザは実際には 'FORWARDED'ヘッダを使用しません。これらはサーバーとプロキシのためのものです。ヘッダーは任意のキー値のペアに設定できるため、私は共通のプロキシサーバーに慣れていることを指摘しました。 –

関連する問題