• ベストアンサー

サイトのIPアドレスを取得

お世話になっております。 POSTされたURL(http://www.○○.com/)から、そのサイトが運営されているウエブサーバのIPを取得したいと思っています。 dns_get_record()この関数を用いることで取得できるところまで分かって来たのですが、実際にIPを取得するスクリプトが上手くかけずに、スクリプトを設置しているサーバーのIPアドレスが表示されてしまいます。 $url = $_POST["url"]; $result = dns_get_record($url); print_r($result); お恥ずかしいのですが、このあと、IPだけを抜き出そうとすると、このスクリプトの設置してあるサーバのIPになってしまうようです。 お忙しいなか恐縮ですが、アドバイスのほど宜しくお願い申し上げます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

============結論================ 再現しない。 ============使ったコード========= <?php /* 当然正しく実行されない。DNSレベルではhttp登場しない。一応自分の知識の復習用。 型チェックしない言語だし実行時までエラーか判らないのが非常に辛い。 これは、エラーと言うか警告で、型どうこうよりももっと関数の仕様が悪い。 */ $result = dns_get_record("http://www.google.com/",DNS_A); print_r($result); /* これは正常 DNSラウンドロビンなどがあるので 当然帰ってくるIPv4アドレスは */ $result = dns_get_record("www.google.com",DNS_A); print_r($result); /* ここでは試さないけど、ドメイン名だけを取るのにparse_url関数がある…あるけど…けど… マニュアルによると、parse_url関数はvalidateしない。やってくれ、頼むから>関数 */ /* hostname should be a valid DNS hostname such as "www.example.com". Reverse lookups can be generated using in-addr.arpa notation, but gethostbyaddr() is more suitable for the majority of reverse lookups マニュアルによると、IPアドレスからホスト得るにはgethostbyaddr関数っていうより適した関数があります、だそうだ。 今回はその逆。gethostbyname関数も一応試しておこう。 */ /* 結果に示すが、どうやら先頭の一つだけ取ってくるらしい。多分。*/ print_r(gethostbyname("www.google.com")); ?> ==========コードの出力結果================ <br /> <b>Warning</b>: dns_get_record() [<a href='function.dns-get-record'>function.dns-get-record</a>]: Dns Query failed in <b>C:\Environment\Users\WWW\OKWave\Q5606391\Q5606391-1.php060000</b> on line <b>2</b><br /> Array ( [0] => Array ( [host] => www.l.google.com [type] => A [ip] => 66.249.89.99 [class] => IN [ttl] => 175 ) [1] => Array ( [host] => www.l.google.com [type] => A [ip] => 66.249.89.103 [class] => IN [ttl] => 175 ) [2] => Array ( [host] => www.l.google.com [type] => A [ip] => 66.249.89.104 [class] => IN [ttl] => 175 ) [3] => Array ( [host] => www.l.google.com [type] => A [ip] => 66.249.89.147 [class] => IN [ttl] => 175 ) ) 66.249.89.99

a4_chapp
質問者

お礼

himajin100000様 早速のアドバイスをありがとうございます。 ソースまで提示していただき、色々と考えさせられました。 ご親切なアドバイスをありがとう御座いました。 himajin100000さまのアドバイスのもと解決しましたことをご報告いたします。ありがとう御座いました!

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

URLじゃなくて、ホスト名を与えてください。 $x = parse_url($url); $result = dns_get_record($x["host"]);

a4_chapp
質問者

お礼

notnotさま 早速のアドバイスをありがとうございます。 すみません。$url をホスト名に直したものを実行しても、配列から抜き出すとスクリプトの設置してあるサーバのIPを取得してしまうという状況でした。私の説明不足というかソースがおかしいですね。すみませんでした。 ご親切なアドバイスに感謝いたします。

関連するQ&A