Php 使用cURL、explode和foreach检查403响应代码
好的,我正在制作一个脚本来检查给定的网站是否返回403。我加入了一些零碎的东西来让它工作,如果我一次只检查一个网站,它确实工作,但它不适用于多个网站Php 使用cURL、explode和foreach检查403响应代码,php,curl,foreach,Php,Curl,Foreach,好的,我正在制作一个脚本来检查给定的网站是否返回403。我加入了一些零碎的东西来让它工作,如果我一次只检查一个网站,它确实工作,但它不适用于多个网站 $url = $_POST['site']; $many_urls = explode(",", $url); $handle = curl_init($url); curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE); /* Get the HTML or whatever is linke
$url = $_POST['site'];
$many_urls = explode(",", $url);
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
/* Get the HTML or whatever is linked in $url. */
$response = curl_exec($handle);
/* Check for 403 (forbidden). */
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
foreach ($many_urls as $urls)
{
if($httpCode == 403) {
echo "<h2>$url is <font color='red'>Forbidden.</font><h2>";
} else echo "<h2>$url <font color='green'>Works.</font><h2>";
}
curl_close($handle);
因此,如果我输入例如:google.com、youtube.com、bankedenwebsite.com
它应返回:
google.com作品youtube.com作品禁止网站在不同的线路上被禁止
我很确定每个零件都有问题
任何帮助都将不胜感激。谢谢。如果要在列表形式下独立检查每个url,则需要在循环中进行卷曲。否则,您将检查google.com、youtube.com、forbiddenwebsite.com的标题,这些标题不是有效地址。试试这个:
/* exploding the url list will give an array with 1 item in the case of only 1 url */
$urls = explode(',', $_POST['site']);
/* wrap the whole thing in the loop, check each url individually */
foreach($urls as $url){
$handle = curl_init($url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, TRUE);
/* Get the HTML or whatever is linked in $url. */
$response = curl_exec($handle);
/* Check for 403 (forbidden). */
$httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE);
if($httpCode == 403) {
echo "<h2>$url is <font color='red'>Forbidden.</font><h2>";
} else echo "<h2>$url <font color='green'>Works.</font><h2>";
curl_close($handle);
}
您可能还需要添加一些检查,以检查post VAR中传递的空字符串的情况。哇,这很有效!谢谢。现在有没有一种方法可以让这件事变得更好或更快呢?如果您只想从标题中找到响应代码,那么您可以查看