7

PHPでは、現在のページのURLにwwwが含まれているかどうかを確認するにはどうすればよいですか?

たとえば、ユーザーがhttp://www.example.com/somethingにいる場合、URLにwwwが含まれていて、 http://example.com/somethingにwwwがURLに含まれていないことを確認するにはどうすればよいですか?

4

6 に答える 6

11

を使用$_SERVER['HTTP_HOST']してドメインを取得できます。あなたのサイトがサブドメインを使用していない場合、それは簡単です。次のようなものを使用してください:

$url1 = "www.domain.com";
$params = explode('.', $url1);

if(sizeof($params === 3) AND $params[0] == 'www') {
    // www exists   
}

params 配列に 2 つのアイテムがある場合、ドメインは次のようになり、明確にdomain.com存在しないことに注意してください。配列wwwのサイズを確認して、そのサイズに基づいて存在するかどうかを判断することもできます。$paramswww

サイトがサブドメインを使用している場合は、さらに複雑になります。考えられるシナリオは次のとおりです。

$url1 = "www.domain.com";
$url2 = "www.sub.domain.com";
$url3 = "domain.com";
$url4 = "sub.domain.com";

次に、すべての URL を再度展開し、サイズを比較して、最初の項目が「www」であるかどうかを確認します。wwwしかし、あなたのサブドメインはサブドメインになる場所に名前を付けることができることに注意してくださいwww:D そして、それは次のようになります: www.domain.com、そして再び、wwwサブドメインです:)

とにかく、wwwサイトがサブドメインを使用していないかどうかを確認するのは簡単です. しかし、URL にサブドメインがwwwあり、サイトがサブドメインを使用しているかどうかを確認するのは難しい場合があります。この問題に対処する最も簡単な解決策はwww、可能であればサブドメインを無効にすることです。

さらにヘルプが必要で、これで質問の答えが得られない場合は、お気軽にお問い合わせください。のようなサブドメインとなる独自のアカウントをユーザーが作成できる同様の状況がwww.user.domain.comあり、同じことをしなければなりませんでした。

お役に立てれば!

于 2012-11-12T00:37:56.757 に答える
7

あなたはpreg_matchこれを行うことができます:

if(preg_match('/www/', $_SERVER['HTTP_HOST']))
{
  echo 'you got www in your adress';
}
else
{
  echo 'you don not have www';
}

上記のオプションを構築しているものに応じて、.htaccessを使用してそれを行うこともできますが、単純な検出には問題ありません。

フェルディアが与えたオプションを選択した場合は、次のようにチェックします。

$domain = array_shift(explode(".",$_SERVER['HTTP_HOST']));
if(in_array('www', $domain))
{
    echo 'JUP!';
}
于 2012-11-12T00:04:37.233 に答える
4

URLはもうわかりますか?次に、これを取ります:

<?php
$parsed = parse_url("http://www.example.com/something");
$hasWww = strpos($parsed['host'], "www.") === 0;
var_dump($hasWww);

そうでなければ、取る

 strpos($_SERVER['HTTP_HOST'], "www.") === 0
于 2012-11-11T23:59:26.007 に答える
2

www が含まれているかどうかを確認する方法はたくさんあります。

方法の1つは次のとおりです。

if(strpos($_SERVER['HTTP_HOST'], `www`) !== false) {
    echo "WWW found";
} else {
    echo "WWW not found";
}
于 2016-12-27T21:40:42.643 に答える
1
array_shift(explode(".",$_SERVER['HTTP_HOST']));

動作するはずです。次に、wwwの存在についてアレイを調べます。wwwを削除または強制しようとしているだけの場合、そのジョブでは.htaccessルールがPHPよりもはるかに優れています。

于 2012-11-11T23:55:58.710 に答える
1

説明書より

$_SERVER['HTTP_HOST']

現在のリクエストの Host: ヘッダーの内容 (存在する場合)。

$_SERVER['SERVER_NAME']

現在のスクリプトが実行されているサーバー ホストの名前。スクリプトが仮想ホストで実行されている場合、これはその仮想ホストに対して定義された値になります。

于 2012-11-12T00:00:52.667 に答える