2

わかりました簡単です

<?PHP
echo $_SERVER[REMOTE_ADDR];
?>

そうではないかもしれませんが、私の IP は現在72.184.212.85ですが、スクリプトの IP ブロック システムで使用している上記のコードでは、私の IP が127.0.0.1のホーム サーバー IP として表示されます。

したがって、スクリプトに移動すると、IP は127.0.0.1と表示されますが、他の Web サイトに移動すると、72.184.212.85と表示されます。

テスト サーバーに表示される最初の値を取得するにはどうすればよいですか?

4

3 に答える 3

14

$_SERVER['REMOTE_ADDR']リクエストの送信元の IP アドレスが常に表示されます。独自のネットワーク内の独自のコンピューターで独自のスクリプトにアクセスする場合、外部 IP アドレスは決して機能しません。外部アドレスを表示するには、要求がローカル ネットワークを出てから戻ってくる必要がありますが、すべてがローカルの場合、それは起こりません。

于 2009-07-25T04:24:29.033 に答える
1

サーバーをパブリックにアクセスできるようにしてから、パブリック アドレスからアクセスする必要があります。現在、サーバーにアクセスするために localhost を使用していると思いますか?

サーバーをポート8080と言って実行し、ルーターのポートを転送して、インターネットに公開します。次に、 http://localhost:8080の代わりにhttp://72.184.212.85:8080から Web ページ/phpscript にアクセスします。

于 2009-07-25T04:30:52.297 に答える
0

これは私がお勧めしないばかげた解決策です:

ホーム IP をドメイン名で登録し、URL を介してリクエストの送信元を確認します。

$url = $_SERVER["SERVER_NAME"];

また

$url = $_SERVER["HTTP_HOST"];

次に、その結​​果の dns ルックアップを実行します。これにより、登録されている IP、つまり外部 IP が返されます。

 $ext_ip = gethostbyaddr($url);

これが機能しない唯一の理由は (私が間違っていたら申し訳ありません)、SERVER_NAME が「REMOTE_HOST」と同じ方法を使用している場合です。これは逆 DNS ルックアップであり、内部 IP が解決されないため解決されません。そのドメイン名に登録されます。簡単に確認するには、次のいずれかを行います。

 phpinfo();

環境変数が何であるかを確認します。

于 2009-07-25T04:51:43.300 に答える