ホームページ >バックエンド開発 >PHPチュートリアル >PHP は各リクエストのクライアント IP アドレスをどのように判断するのでしょうか?

PHP は各リクエストのクライアント IP アドレスをどのように判断するのでしょうか?

WBOY
WBOYオリジナル
2016-06-20 12:31:521173ブラウズ

各リクエストで IP 検証を実行する必要があります。つまり、ユーザーのログイン後に IP が変更されたかどうかを識別する必要があります。
C層のPHP_RINIT_FUNCTIONに実装したいのですが、CライブラリにクライアントIPを取得できるインターフェースが見つかりません。
php レイヤーは $_SERVER['REMOTE_ADD'] を通じて取得できますが、php コードには統一された入口がありません。既存の html、php、js のすべてに判定を追加する必要があります。

皆さんにお聞きしたいのですが、この機能を実装する良い方法はありますか?


ディスカッションへの返信 (解決策)

ただし HTTP_REMOTE_ADDこれは CGI ゲートウェイの環境変数です。PHP では $_SERVER['REMOTE_ADD']
に入れるだけです。 c

を使用すると自然に取得できますが、HTTP_REMOTE_ADD は CGI の環境変数です。ゲートウェイ 、PHP はそれを $_SERVER['REMOTE_ADD'] に置くだけです
C を使用して自然に取得できます


モデレーターの返信ありがとうございます。PHP は C インターフェイスを提供しますか?それとも、PHP コードのどの部分が関係しているのでしょうか?

C のコードは単なる PHP コードではありませんか? $_SERVER['REMOTE_ADD'] を使用して取得できる場合、他に何ができるでしょうか?

C のコードは単なる PHP コードではありませんか? $_SERVER['REMOTE_ADD'] を使用して取得できる場合、他に何ができるでしょうか?


結局のところ、c 部分の PHP_RINIT_FUNCTION で PHP コードを直接呼び出すことはできず、やはり c インターフェイスが必要です。
php ソース コードを確認したところ、zend ハッシュを通じて $_SERVER['REMOTE_ADD'] の値を見つけることができました。ばっちり成功。
ありがとうございます
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:編集者の問題次の記事:編集者の問題