IP 投票を制限するプログラムの場合、PHP オンラインで検索してクライアント IP を取得するコードを使用してクライアント IP を取得することはできません - 再版
投票イベントのリクエストを受け取り、それを行う必要がありました IP 各回限定 IP 特定の投票機会を制限します。検索エンジンでキーワードを検索しました: PHP クライアント IP 、結果は基本的に次のとおりです:
?
if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $onlineip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $onlineip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $onlineip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $onlineip = $_SERVER['REMOTE_ADDR']; }
?
このコードは で広く使用されています 《 ディスカス 》フォーラム ソフトウェアおよび多くのオープン ソース コード PHP はソフトウェアで使用されます。一般的な考え方は、最終的に を取得することです。 クライアント IP アドレス (プロキシアクセスを使用してユーザーのを取得できます) IP アドレス)。
????????? 多くの成熟したプログラムはこのコードを使用してクライアント を取得するため、 IP アドレスなので、自信を持ってプログラムで使用しましたが、幸いにも同僚が後で思い出させてくれたので、このコードは を制限するために使用できないことがわかりました。 IP の投票プロセス、 のため HTTP_X_FORWARDED_FOR これは偽造可能です。 をリクエストヘッダーに追加するだけです X-Forwarded-For 。サーバー側の $_SERVER[‘HTTP_X_FORWARDED_FOR’] 受信されるのは、このリクエスト ヘッダーの内容です。
????????? プログラムを使って説明しましょう:
????????? http://localhost/i.php コンテンツは上記のコードを通じて取得されます IP 住所を指定して印刷します。
?????? リクエストを構築するコードを記述し、これをリクエストしてください URL : リクエストヘッダーに を追加しました X-Forwarded-For このパラメータ
$head = array(); $head[] = 'GET /i.php HTTP/1.1'; $head[] = 'Host: localhost'; $head[] = 'X-Forwarded-For: 255.255.255.255' ; $head[] = 'Connection: Close' ; $head = join("\r\n",$head) ; $head .= "\r\n\r\n"; $fp = fsockopen('localhost', 80); fwrite($fp, $head); $response = array() ; while($buff = fread($fp, 4096)){ $response[] = $buff; } print join('',$response) ;
このコードを実行すると、サーバー側 (localhost/i.php) 印刷済み 255.255.255.255 。
これはクライアントを取得する方法を示しています IP の方法は限られています IP は投票イベントでは推奨されません。クライアント IP 住所は偽造される可能性があります。代わりに を直接使用してください ? $_SERVER['REMOTE_ADDR'] 得られるものはユーザーの最終的な ではありませんが、 IP アドレスを指定しますが、制限された機能は直接かつ効果的に達成されます。
????????? もちろん、コードが間違っているとは言えません。一部のペアでは IP は、ユーザーがアクセスする地域のサブサイトが多数ある一部の Web サイトなど、無制限の要件に使用する必要があります。 IP 、ユーザーがいる地域のサブ Web サイトなどに直接ジャンプします。
??
?
?
?