1

ユーザーが特定のサブドメインから自分のサイトにアクセスしているかどうかを検出する必要があります。次の例を検出し、PHPを使用してフラグを立てるにはどうすればよいですか?「abc」がサブドメインであり、それ以上のものではないかどうかを検出したいだけですが、「abc」の後に他のさまざまなドメインで機能する必要があります。

はい、それらは「abc」サブドメインにあります。

いいえ、そうではないです。

4

5 に答える 5

2

$_SERVER変数でHTTP_HOSTまたはSERVER_NAMEを確認できます。

<?php
if(strpos($_SERVER['SERVER_NAME'], 'abc.domain.com') !== false) {
    //do something
}
?>
于 2012-11-21T20:22:50.520 に答える
2

これにより、サブドメインが返されます。

array_shift(explode(".",$_SERVER['HTTP_HOST'])); 
于 2012-11-21T20:23:34.763 に答える
1

$_SERVER次のように、スーパーグローバル内からホスト名にアクセスできます。

$domain = $_SERVER['HTTP_HOST']

この場合、この値が。で始まるかどうかを判断する方法はいくつもありますabc。最も簡単なのはstripos

if(stripos('abc', $domain) === 0) {
    // you found it
}

===ここでは、の代わりにを使用することが==非常に重要であることに注意してください。を使用==し、に部分文字列が見つからなかった場合は$domainstriposを返します。falseこれは、条件付きの場合と同じように== 0評価さtrueれます。

于 2012-11-21T20:27:07.277 に答える
1
<?php

if( explode( '.', $_SERVER['SERVER_NAME'] )[0] === 'abc' ) {
    //do something
}
?>

これは、サーバー名を で割った部分に展開する.ため、ドメイン名の最初の部分を文字列 abc と比較します。

爆発(x、x)[N]のことは、PHP 5.4+(または5.3+、正しく覚えていません)でのみ可能です。

于 2012-11-21T20:33:13.413 に答える
0

すべてのサブドメインを単一のPHPファイルにリダイレクトするようにWebサーバーを構成できます。このファイルでは、エラーを作成したり、次のheader()ような関数を介してユーザーをリダイレクトしたりできます。

header('Location: http://domain.com');

また、サブドメインが原因で特定のPHPファイルにアクセスしていることが確実であるため、次のようなことができます...

$url = $_SERVER['SERVER_NAME'];
list($subdomain) = explode('.', $url, 2);
$subdomain = trim(strtolower($subdomain));

そして、$subdomain変数を好きなように使用します(たとえば、印刷します)...

echo $subdomain;

念のため。Apache構成の場合、VirtualHost処理のためにサブドメインをPHPファイルにリダイレクトするためにを変更する必要があります。

<VirtualHost *:80>
ServerAlias *.domain.com
DocumentRoot /website/directory/page.php
</VirtualHost>

ノート

1.)Apacheを再起動します。
2.)Apacheは、ディレクトリが存在しないことを警告します。ディレクトリパスの代わりにファイルパスを指定しているので、それは本当です。しかし、これは機能します。

于 2012-11-21T20:36:33.813 に答える