嵌套的foreach()循环php Codeigniter-Php错误

时间:2013-02-14 01:33:52

标签: php loops foreach

我正在Message: Invalid argument supplied for foreach()

在此行foreach($element->action as $URI){ // find action="" attr of <form> element

我的代码是嵌套的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;,但这似乎无法修复它

2 个答案:

答案 0 :(得分:1)

当参数(此处为$element->action)不是数组(或类似数组)时,您会收到“为foreach()提供的无效参数”消息。

我认为这里的问题是你根本不需要内部foreach循环。 $element->action似乎代表HTML表单元素的“action”属性。每个表单只有一个动作,可能在PHP中表示为字符串,而不是数组。

取出内循环并简单地添加一条你所提到的行$URI = $element->action,应该可以解决这个问题。

答案 1 :(得分:0)

请检查$element->action是否有某些价值,请在第一次循环后使用print_r( $element);,并将内循环放入contion ==&gt; 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; } } }