2016-10-21 13 views
2
私は唯一のサイトがに仕上がっチェックする

ゲット:私が試し*.test.com*.test1.com :あなたはstr_posを使用することができのみ指定されたURL

if((preg_match('.\w+.test.com', $_SERVER['HTTP_ORIGIN'])) or (preg_match('.\w+.test1.com', $_SERVER['HTTP_ORIGIN']))){ 
} 
+0

試してみてください(+リンクされたページを)ここで主題についての詳細を読むことができます$ urlcheck = expload( "test.com"、$ _、SERVER [ 'HTTP_ORIGIN']); if(isset($ urlcheck [1]))//あなたのコードがここに来るようにtest.comを持っていることを意味します。 test.comと* .test1.comの両方で試してください –

+0

PHPは正規表現の区切り文字を必要とします。http://php.net/manual/en/regexp.reference.delimiters.php。これらの正規表現はエラーを投げかけていたはずです。 – chris85

答えて

6

を ドキュメントを検索するには、任意のURLを打破するための最も確実な方法をしたいです。このためには、PHPのbuilt-in parse_url functionを使用することができます。

$host = parse_url($url, PHP_URL_HOST); 

その後、あなたは正規表現を使用して行うことができ、それはtest.comまたはtest1.comで終わるかどうかを確認したい:

if (preg_match('/test1?\.com$/', $host)) { 
    //match 
} 

正規表現作品

  • test
  • 文字列リテラル "テスト" と一致し、このような
  • 1?:リテラル1にマッチしますが、それはオプションなのでtesttest1両方が
  • \.一致します:リテラルのドット一致
  • com:COM
  • $のリテラルの一致:文字列の末尾を。この式は、文字列が終了する場合にのみ一致します。test.comまたはtest1.comです。

単なる警告の言葉:$_SERVER['HTTP_ORIGIN']、および$_SERVER値のほぼどれも実際には、信頼されることになります。あなたは

How secure is HTTP_ORIGIN?

0

。 Str_posはここlink

...文字列、リンク、URL内手始めにちょっと一例である

if(strpos($_SERVER['HTTP_ORIGIN'], 'test.com') !== false) { 
    echo "found it"; 
} 
+1

あなたは 'test1.com'をチェックしていません。あなたは私の答えを編集しようとしました:質問をもう一度読んでください:OPは_ "test.com" _ ***と*** _ "test1.com" _をチェックします。チェックされていない 'test1'に加えて。 _ "com.org" _のようなドメインを所有していて、_ "test" _サブドメインを持っていた場合、あなたのチェックはHTTP_ORIGINで 'test.com.org'となっていません –

関連する問題