PHPを介してマシンのIPアドレスを取得しようとしています。そのために、次のようなコードを書いています。
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
しかし、このコードは機能していません。「 」を返してい::1
ます。実際の IP アドレスを取得する方法を教えてください。
PHPを介してマシンのIPアドレスを取得しようとしています。そのために、次のようなコードを書いています。
<?php echo "<br />".$_SERVER['REMOTE_ADDR'];?>
しかし、このコードは機能していません。「 」を返してい::1
ます。実際の IP アドレスを取得する方法を教えてください。
::1
実際のIPです。これは、ipv6ループバックアドレス(つまり、localhost)です。ipv4を使用している場合は、になります127.0.0.1
。
別のIPアドレスを取得する場合は、別のネットワークインターフェイスを介してサーバーに接続する必要があります。
localhost を実行しようとしている場合、この回答で問題が解決します。わずかな変更のみ
apache2/httpd.conf
すべての「聞く」単語を検索する例:
Listen 80
このようにします。
Listen 127.0.0.1:80
Apacheを再起動するより
$_SERVER[REMOTE_ADDR]
表示されます Listen 127.0.0.1
この詳細な回答リンクで回答を見ることができます
ユーザーのIPアドレスを取得する場合は、次のようにすることができます。
<?php
if(!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else{
$ip=$_SERVER['REMOTE_ADDR'];
}
?>
<?php echo "<br />".$ip;?>
プロキシなどに関係なく、ユーザーの実際のIPアドレスを取得します。
$_SERVER['REMOTE_ADDR']はクライアントのIPアドレスです。
$_SERVER['SERVER_ADDR']はサーバーのIPアドレスです。
の出力を見てくださいphpinfo()
。アドレスがそのページにない場合、そのアドレスはPHPから直接利用できません。