2016-10-21 3 views
2
난 단지 사이트에 완료 확인 할

가져 오기 : I 시도 *.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을 분해 할 수있는 가장 신뢰할 수있는 방법을 원한다.

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

정규식 작품 : 다음

$host = parse_url($url, PHP_URL_HOST); 

, 당신은 당신이 정규식을 사용하여 수행 할 수 test.com 또는 test1.com에 종료 여부를 확인하려면이 들어, PHP의 built-in parse_url function 사용할 수 같은 :

  • test : 문자열 리터럴 "테스트"
  • 일치
  • 1?는 : 리터럴 1 일치하지만, 선택, 그래서 모두 testtest1
  • \. 일치합니다 : 리터럴 점이 일치
  • com : COM
  • $에 대한 문자 일치 : 문자열의 끝. 이 표현식은 문자열이 인 경우 test.com 또는 test1.com으로 끝나는 경우에만 일치합니다.

그냥 경고의 말씀 : $_SERVER['HTTP_ORIGIN']하고 $_SERVER 값의 거의 아무도 사실은 신뢰할 수 있습니다. 당신은

How secure is HTTP_ORIGIN?

0

. Str_pos 문자열, 링크 URL 내에서 검색합니다 .. 을 문서 여기 link

하는 선발을 위해 약간의 예를

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'가 아닌지 확인합니다. –

관련 문제