2014-09-23 5 views
0

필자는 URL에 하나의 GET 매개 변수가 정의 된 경우에만로드해야하는 페이지 별 헤더가 포함 된 코드를 가지고 있습니다.하나의 GET 매개 변수가 정의되어 있는지 확인하십시오.

내가 헤더를 원하는 경우 예를 들어, URL 만했다하면 URL에 "thisonly"매개 변수가 설정되어있는 경우 표시하려면 내가 확인이 코드를 사용하고있다

이전

http://www.example.com?thisonly=w&thisone=q&thistwo=q&thisthree=q

:

if((isset($_GET[thisonly])) && (!isset($_GET[thisone])) && (!isset($_GET[thistwo])) && (!isset($_GET[thisthree]))) { 
    // Run this code 
    } 

위의 경우 다른 매개 변수가 설정되어 있으므로 코드가 실행되지 않습니다.

그러나 매개 변수를 추가하는 경우 업데이트가 번거로 웠습니다. 돌아가서이 코드를 추가하여 설정되지 않았는지 확인해야합니다.

if((isset($_GET[thisonly])) && (!isset($_GET[nothingelse]))) { 
    // Run this code 
    } 

일예의 동등한 내려 단축 할 수있는 방법은 "thisonly"유일한 파라미터 세트이며, 다른 매개 변수는 코드를 실행 한 후 설정되지 않은 경우,이 있습니까?

감사의 말 - 감사합니다!

+0

'[thisonly]'는 [** 상수 **] (http://php.net/manual/en/language.constants.php)로 취급됩니다. 따옴표 '['thisonly ']'등으로 묶으십시오. –

+0

그냥 이해합니다. 어떻게하면 원하지 않는 결과가 생길 수 있습니까? 나는 당신의 링크를 읽었지 만, 따옴표로 묶지 말아야하는 이유는 모르겠다. 주위에 따옴표를 붙이면 http://www.example.com?TeSt=true가 http : // www와 같은 것을 등록한다는 것을 의미한다. .example.com? test = true – vsdesign

+0

아래의 John의 대답과 함께 인용 부호없이 시험해보십시오. 그것이 효과가 있다면, 좋아. 오류가 발생하면 이유를 알 수 있습니다. –

답변

2
if(count($_GET) === 1 && isset($_GET['thisonly'])) { 

이것은 $_GET 하나만 요소 배열이 있는지 확인하며 $_GET['thisonly']이다.

+0

감사합니다 !!!!!! – vsdesign

+0

하나의 빠른 후속 조치 - 각 "$ _GET"변수에 개별적으로 적용한 "securevalue"함수 (pregreplace, mysql_real_escape_string 및 trim 포함)가 있습니다. 이 논리는 모든 $ _GET 값을 하나씩 보호하는 것이 아니라 보안을 유지합니까? : if (isset ($ _ GET)) {securevalue ($ _ GET);} – vsdesign

+0

함수를 적용하는 데 사용할 수있는 PHP 함수가 있습니다. a 배열. 먼저'array_map()'을 보라. –

관련 문제