2010-12-12 28 views
16

私はウェブサイト上で作業しています。私がしたいことの1つは、ユーザーに私のIPアドレスを表示することです。このWebサイトはCodeIgniterで作成されているので、私はPHPでサーバIPを探していました。 IPアドレスは変更される可能性があります(ローマーなので)、ハードコードだけではなく、動的に見たいと思います。代わりに、私のホスト名とIPを与える、私が得た、しかしPHPディスプレイサーバーのIPアドレス

$data['hostname'] = NULL; 
$data['ip'] = NULL; 
$var = gethostname(); 
if ($var === FALSE) { 
    $var = NULL; 
} else { 
    $data['hostname'] = $var; 
    $data['ip'] = gethostbyname($var); 
} 

:「モリア」と「127.0.1.1」私はこれを試してみました。私が探しているものではありません。むしろ、それはホスト名とIPアドレスのために "Moria.student.rit.edu"と言うべきです。どんな助け?

答えて

44

お試し$_SERVER['SERVER_ADDR']サーバーがリッスンしているIPアドレスになります。 DNS機能(例:gethostbyaddr())を使用してホスト名を取得できます。

http://www.php.net/manual/en/reserved.variables.server.phpを参照してください。

+0

すっごいを、それが働きました。ありがとうございました! –

-5

あなたlaravelアプリケーションが内部サーバ上で実行されている場合は、サーバーの外部アドレスを取得するには、次のように使用することができます。

$external_ip = exec('curl http://ipecho.net/plain; echo'); 
+2

悪い、悪いと間違っています。このコードは非常に悪く、本番環境では使用しないでください。あなたは本質的なPHP Curlライブラリを使うべきです。これにより、httpプロセスをフォークしてシェルを生成する必要がなくなります。 「カール」がその道にあるかどうかは誰が知っていますか? 'エコー'とは何ですか?いずれにしても、Webサーバーは、組織の境界の外側に決して許可されるべきではありません。それが必要な場合は、内部プロキシを経由する必要があります。 – dland

+2

このページ全体にlaravelの単一の言及があなたのものを受け入れるわけではありません。 -1 – TheBlackBenzKid