1

正規表現を使用してサブドメイン/ドメインをチェックまたは検証しようとしています。これが必要なものであることを確認してください。

if($_SERVER['HTTP_ORIGIN'] == "^(.*\.?domain\.com)$"){
   header('Access-Control-Allow-Origin: '.$_SERVER['HTTP_ORIGIN']);
}

したがって、サブドメインがes.domain.com、en.domain.comなど.domain.com、domain.ws、test.comの場合、ヘッダーポリシーを出力できます。

詳細説明:いくつかのサブドメイン(約40)とさらに2つのドメイン(合計、3つのドメイン)があり、$ _ SERVER['HTTP_ORIGIN']がこのドメインまたはサブドメインの1つと等しいかどうかを知る必要があります。ヘッダーポリシー。

サブドメイン/ドメインをリストに配置すると長すぎるため、正規表現を使用してこれを実行したいと思います。何か助けはありますか?

再開:この検証を通過したいdomain.com、domain.ws、test.com(それぞれのサブドメイン)の3つのドメインがあります。

4

2 に答える 2

2

さて、PHPにはpreg_*正規表現で使用するための関数があります。あなたの場合:

if(preg_match('/^(?:.+\.)?domain\.com$/', $_SERVER['HTTP_ORIGIN']))

許可されているドメインとサブドメインについてより具体的にしたい場合(任意の組み合わせを許可します-セカンドレベルドメインはエイリアスであると想定します):

if(preg_match('/^(?:(?:es|en|etc)\.)?(?:domain\.com|domain\.ws|test\.com)$/', $_SERVER['HTTP_ORIGIN']))

あなたが言及したホスト名のいずれかを許可します。

または、任意のサブドメインとドメインを許可し、それらをキャプチャして、後で確認することもできます。許可されたサブドメインの配列と許可されたセカンドレベルドメインの配列があるとします。

preg_match('/^(?:(.+)\.)?([^.]+\.[^.]+)$/', $_SERVER['HTTP_ORIGIN'], $matches);
$subdomain = $matches[1];
$domain = $matches[2];
if((!$subdomain || in_array($subdomain, $subdomainArray)) &&
   in_array($domain, $domainArray))
{
    ...
}

preg_matchドキュメンテーション。

于 2012-11-30T00:05:46.217 に答える
0

これを試して

preg_match("/".addcslashes($_SERVER["DOCUMENT_ROOT"],"/")."\/(\w+)\//",$_SERVER["SCRIPT_FILENAME"],$d);

$sub = $d[1];
于 2012-11-30T00:54:54.043 に答える