PHP を使用してユーザークライアントの実際の IP を取得する方法
この記事では、PHP を使用してユーザー クライアントの実際の IP を取得する方法を主に紹介します。これを必要とする友人に共有します。クライアントの IP は実際には単純な仕事ではありません。IP スプーフィングや代理店の問題があるため、クライアントの IP を取得する際の信頼性は損なわれ、100% 正確に取得することはできません。顧客の IP は次のとおりです。ユーザーのクライアントの実際の IP を取得する PHP メソッドを紹介します。
IP スプーフィングとプロキシがあるため、クライアントの IP を取得するのは簡単ではありません。クライアントの IP の信頼性を取得するという問題がありますが、これは割り引かれるため、100% 正確であることはできません。ただし、クライアントの実際の IP を取得するためのより完全な方法を模索しています。php を使用して IP を取得する方法は数多くあります。
function getIp(){ if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) $ip = getenv("HTTP_CLIENT_IP"); else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) $ip = getenv("REMOTE_ADDR"); else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) $ip = $_SERVER['REMOTE_ADDR']; else $ip = "unknown"; return($ip);
次に、このコードを実行する必要があります。説明では、getenv() と strcasecmp() という 2 つの関数が使用され、値が取得できる場合は、システム環境変数を取得します。値、それ以外の場合は false を返します。
$_SERVER これはサーバーのスーパー グローバル変数配列です。$_SERVER['REMOTE_ADDR'] を使用してクライアントの IP アドレスを取得することもできます。2 つの違いは getenv であることです。 IIS isapi モードでの php の実行はサポートされていません。
strcasecmp(string1 , string2) string 関数の使用法は、string1 と string2 が等しい場合、string1 が string2 より大きい場合に 0 を返します。 0 より大きい場合は、0 より小さい数値が返されます。
関数は最初に顧客の IP を使用します。機能しない場合は、プロキシ メソッドを使用してみてください。機能しません。REMOTE_ADDR を使用してください。
また、IP スプーフィングと複数のプロキシ コードを考慮した、より詳細な IP 検出方法も確認しました。この方法は同様です。 ##1. プロキシ サーバーを使用せずにクライアント IP を取得する PHP:
REMOTE_ADDR = クライアント IPHTTP_X_FORWARDED_FOR = 値なしまたは表示なし
2.透過プロキシ サーバーを使用する場合: 透過プロキシHTTP_X_FORWARDED_FOR = クライアントの実際の IP (複数のプロキシ サーバーを経由する場合、この値は同様です) : 221.5.252.160、203.98.182.163、203.129.72.215)このタイプのプロキシ サーバーは依然としてクライアントの実際の IP をアクセス オブジェクトに送信するため、真の ID を隠すという目的を達成できません。
3. 通常の匿名プロキシ サーバーの PHP を使用してクライアント IP を取得します。 匿名プロキシ
#REMOTE_ADDR = 最後のプロキシ サーバー IP
HTTP_X_FORWARDED_FOR = プロキシ サーバー IP (複数ある場合)プロキシ サーバーの場合、この値は同様です: 203.98.182.163、203.98.182.163、203.129.72.215)この場合、クライアントの実際の IP は隠されていますが、クライアントはアクセスに対して公開されます。オブジェクト プロキシ サーバーを使用してアクセスされます。
4. 不正なプロキシ サーバーの使用: プロキシの歪み
REMOTE_ADDR = プロキシ サーバー IP
HTTP_X_FORWARDED_FOR = ランダム IP (複数のプロキシ サーバーを経由する場合、この値は同様です: 220.4.251.159、203.98.182.163、203.129.72.215)この場合、クライアントがプロキシ サーバーを使用しているが、1 つの偽のサーバーを作成していることも明らかになります。ランダムな IP (220.4.251.159) はクライアントの実際の IP を置き換えて欺瞞します。
5. 高匿名性プロキシ サーバーの PHP を使用してクライアント IP を取得します: 高匿名性プロキシ (エリート プロキシ)
REMOTE_ADDR = プロキシ サーバー IP
HTTP_X_FORWARDED_FOR = 値がないか、表示されませんREMOTE_ADDR であっても HTTP_FORWARDED_FOR であっても、ブラウザーが異なるため、これらのヘッダー メッセージは利用できない場合があります。ネットワーク デバイスは異なる IP ヘッダー メッセージを送信する可能性があるため、$_SERVER["REMOTE_ADDR"] および $_SERVER["HTTP_X_FORWARDED_FOR"] を使用して PHP によって取得される値は、null 値または「不明な」値である可能性があります。
#以上がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。 関連する推奨事項:PHP でアンチリーチングを実装する方法
PHP は IP 情報を取得し、php は ip を取得します以上がPHP を使用してユーザークライアントの実際の IP を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

ReactPhpの詳細な解釈の非ブロッキング機能の公式紹介は、多くの開発者の質問を呼び起こしました。
