2011-03-01 4 views
0

내 문제가 어디에 있는지 잘 모르겠습니다. 내가 좋아하는 매개 변수 (GET)를 호출하는 스크립트했습니다 :

$keyword_allowed = array("STOP", ""); 

$found_keyword = "N"; 
$keyword_cf = ""; 
for($i=0; $i < 2; $i++) 
{ 
    if (eregi($keyword_allowed[$i], $_GET["isms_restemsg"])) 
    { 
     $found_keyword = "Y"; 
     $keyword_cf = $keyword_allowed[$i]; 
    } 
} 

질문 : 여기

http://www.xxx.com?isms_restemsg=STOP&value=1 

은 내 코드입니다

http://www.xxx.com?isms_restemsg=&value=1 

에서 : 호출 된 URL이있을 때 무슨 일이 생긴 것 이 사건, eregi 명령에 무슨 일이 일어 났는지.

$ found_keyword = "N"이거나 "Y"여야하므로이 질문을하고 있습니까? 아니면 오류가 있습니까?

예, 도와 주시겠습니까?

답변

0

deprecated이므로 eregi()을 사용하면 안됩니다.

결국 정규 표현식이 필요한 것처럼 보이지 않습니다.

if ($keyword_allowed[$i] == $_GET["isms_restemsg"]) 

(. 당신이 자신이 작성하는 경우 당신은 아마뿐만 아니라 GET 값을 제어 할 수 있습니다)


당신은 할 수 있습니다

stristr() 또는 단순 비교 구문을 한번 사용 해보세요 일부 디버그 출력을 에코하여 이러한 경우에 도움이됩니다.

print_r($_GET); 
for($i=0; $i < 2; $i++) 
{ 
    echo eregi($keyword_allowed[$i], $_GET["isms_restemsg"])); 
} 
+0

솔루션 : 경우 ($는 keyword_allowed [$ i]를 == $ _GET [ "isms_restemsg"]) 감사 –

2

eregi URL이 귀하의 $_GET["isms_restemsg"]이 공백이

http://www.xxx.com?isms_restemsg=&value=1 

같은 경우, array_search

$keyword_allowed = array("STOP", ""); 
$found_keyword = "N"; 

if(($keyword_c = array_search($_GET["isms_restemsg"], $keyword_allowed)) !== false) { 
    $found_keyword = "Y"; 
} 
+0

감사 등 Martins는 이전에 말 했었습니다.이 경우에는 eregi (비추천) 또는 stristr를 찾지 않았습니다. 나는 배열의 일부분을 검사하지 않지만 전체 부분을 검사한다. 그러나 나는 미래의 목적으로 그것을 지킨다. –

0

는 PHP 5

사용 stristr 대신

if (stristr($keyword_allowed[$i], $_GET["isms_restemsg"])) 

또는 더 나은 아직 기준으로 감가 상각

따라서 if (eregi($keyword_allowed[$i], $_GET["isms_restemsg"]))

초 인수는 내가 아주 확실하지 않다 아직, 그러나 아마 다른 방법이 preg_match

+0

정보 주셔서 감사합니다. –

0

로 교체 사용을 중지가되지 않습니다 eregi 기능

eregi에 널 (null)로 전달됩니다 당신이하려는 일을 성취하십시오.

먼저 특정 정규식을 사용하여 루프를 제거 할 수 있습니다. 이렇게하면 STOP과 빈 문자열이라는 두 가지 대안이 있는지 확인합니다 (이는 아마도 eregi 테스트에서 실패한 것입니다).

if (preg_match('/^(STOP |)$/ix', $_GET["isms_restemsg"], $r)) 
{ 
    $found_keyword = "Y"; 
    $keyword_cf = $r[0]; 
} 
else { 
    $found_keyword = "Y"; 
} 

또는 당신은 단지 두 개의 값에 대해 확인해야하기 때문에 :

if (in_array(strtoupper($_GET["isms_restemsg"]), array("STOP", "")) { 
    $found_keyword = "Y"; 
}