2016-06-15 7 views
-2

PHPのスクリプトを使って絶対URL(例:https://www.facebook.com)としてあいまいなURL(facebook.comでの入力など)を解決しようとしています。あなたのブラウザがPHPを使って毎日行うことに似ています。PHP:gethostbyaddr()が無効なURLを返す

は、これまでのところ私は、次のコードを持っている:これは動作しますIPV4アドレスを、提供

$link = gethostbyname("facebook.com"); 

を、その後私は逆引き参照するとき使用:

$link2 = gethostbyaddr($link); 

私が期待してい"https://www.facebook.com"のような有効なURLを受け取りますが、代わりに "'edge-star-mini-shv-13-atn1.facebook.com'のようなゴミを取得します

これは、fopenまたはカール試してみるウェブページの内容を読んでください。

ここで間違っていることと解決方法を説明できる人はいますか?

EDIT:それは、セキュアHTTP(HTTPS)とは何かではありませんので、 "google.co.uk" リターン " 'lhr25s10-in-f3.1e100.net'" のような安全でないURLをしようと

+0

@ C0dekid - はい。 "google.co.uk"は "lhr25s10-in-f3.1e100.net"を提供しています。それはまったく安全ではありません – Raisus

+0

ホールド..ホストはこのIPがホストされているドメインです.GeoIPツールを使用して自分で確認してください。 Hostbyaddrはウェブサイトのリンクではありません。 – Jer

+0

PHP.net(http://php.net/manual/en/function.gethostbyaddr.php)によると、それは – Raisus

答えて

0

gethostbyaddrは、IPアドレスのURLではなくホスト名を取得します。

複数のホスト名を1つのIPアドレスに割り当てることができます。

gethostbyaddrがデフォルトになります。

そのIPアドレスでリッスンしているHTTPサーバーは、すべてのホスト名への要求を処理します。

HTTP要求には、要求しているホスト名を指定するHostという要求ヘッダーが含まれています。

HTTPサーバーは、そのヘッダーに注意して、異なるホスト名に対して異なる内容を提供することができます。これにより、複数のWebサイトを1つのIPアドレスでホストすることができます。これは非常に便利です。なぜなら、IPv4アドレスは限られた供給量であり、多くのウェブサイトがたくさんあるからです。

facebook.comをホストしているコンピュータのデフォルトのホスト名が表示されていますが、Webサーバーはそのホスト名で必要なWebサイトをホストしていません。

+0

Ahそうですか。代わりにウェブサイトを取得するために使用することをお勧めしますか?答えを編集してこれを含めることができれば、私はそれを受け入れるでしょう – Raisus

+0

(ホストしているコンピュータのIPアドレスではなく)対処したいWebサイトのURLを知り、それを使い始めること。つまり、あなたが質問でやっていることをすべてスキップすることです。 – Quentin

+0

しかし、それはあなたのブラウザがそれをする方法ではありません。 あなたのブラウザがあなたの意図を解釈するために、正確なURLを知っている必要はありません – Raisus