0

我越来越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;但这似乎并没有解决它

4

2 回答 2

1

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

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

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

于 2013-02-14T19:00:38.907 回答
0

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

于 2013-02-14T07:57:58.657 回答