2011-01-27 4 views
2

를 감지하지 I가 나는 빈 값PHP는 빈 POST 변수

if (empty($_REQUEST["category1id"])){ 
       $_REQUEST["category1id"] = 0; 
     }else if (empty($_REQUEST["category2id"])){ 
       $_REQUEST["category2id"] = 0; 
     }else if (empty($_REQUEST["category3id"])){ 
       $_REQUEST["category3id"] = 0; 
     }else if (empty($_REQUEST["category4id"])){ 
       $_REQUEST["category4id"] = 0; 
     }else if (empty($_REQUEST["category5id"])){ 
       $_REQUEST["category5id"] = 0; 
     }else if (empty($_REQUEST["price"])){ 
       $_REQUEST["price"] = 0; 
     }else if (empty($_REQUEST["onlinestock"])){ 
       $_REQUEST["onlinestock"] = 0; 
     }else if (empty($_REQUEST["weight"])){ 
       $_REQUEST["weight"] = 0; 
     } 

를 확인하기 위해 다음 어떻게 든 비어 이러한 값 중 하나를 감지하지 못하고있어하고 있어요

Array ([productid] => 3 
[newid] => 3 
[name] => 
[description] => 
[price] => 
[onlinestock] => 
[weight] => 
[keywords] => 
[longdescription] => 
[graphic1] => 89.jpeg 
[graphic2] => 
[parameter1] => 
[parameter2] => 
[category1id] => 101 
[category2id] => 
[category3id] => 
[category4id] => 
[category5id] => 
[extra1] => 
[extra2] => 
[extra3] => 
[group1id] => 1575 
[groupprice1] => 0 
[group2id] => 1576 
[groupprice2] => 0 
[group3id] => 1577 
[groupprice3] => 0 
[group4id] => 1578 
[groupprice4] => 0 
[group5id] => 1579 
[groupprice5] => 0 

다음과 같은 배열 ? 나는 이것이 $ _REQUEST [ 'category1id'] == ""$ _REQUEST를 시도해 볼 수 있을지 확신하지 못하고 또한 작동하지 않습니다. 어떤 도움이

+4

'$ _POST'가 아닌'$ _REQUEST'를 사용합니다. – BoltClock

+2

보기 : http://php.net/manual/en/function.empty.php 다음 내용은 비어있는 것으로 간주됩니다. * ""(빈 문자열) * 0 (정수로 0) * 0 (문자열로 0) * NULL * 거짓 * 배열() (빈 배열) * var $ var; (변수가 선언되었지만 클래스에서 값이없는) –

답변

7

논리에 결함이 있습니다. else if을 사용하면 이전 조건이 false을 반환 한 조건 만 일치합니다. 각 else을 제거하면 제대로 작동합니다.

+0

사실을 고쳤고, 나에게서 바보가되어 바보가되었다 ;-) Thanx – Roland

2

좋은 의견 위에서 감상 할 수있다, 중요한 것은 사용하지 않는 것입니다 $ _REQUEST :

$_REQUEST contains: $_COOKIE, $_GET, and $_POST variables

당신은 $ _REQUEST를 사용하는 경우는 데이터가 POST에서 온 것이라는 보장이없는 스크립트의 보안 허점으로 연결됩니다. $ _POST/$ _ GET을 원하는 것으로 명시 적으로 선언하십시오.

0

나는 당신이 거기에 무슨 일이 벌어지고 있는지 알고 싶을 것 같습니다. 언젠가 당신이하려고했던 것에 대한 시간이 나는 isset을 사용했습니다. 답변이 필요한 경우 else.

4

페카는 100 % 정확합니다. 그러나 나는 당신의 접근 방식을 바꾸는 것이 더 쉬울 것이라고 생각합니다. 이 루프 전체 if/else 블록을 교체 : 당신은 단지 POST 변수를 찾고 있다면

foreach ($_POST as &$post) { 
    $post = empty($post) ? 0 : $post; 
} 
+0

btw,'$ post = 비어 있음 (....'은 삼항 연산자입니다 (http://php.net/manual/en/language.operators.comparison.php) – Jakub