Php 使用cURL、explode和foreach检查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

好的,我正在制作一个脚本来检查给定的网站是否返回403。我加入了一些零碎的东西来让它工作,如果我一次只检查一个网站,它确实工作,但它不适用于多个网站

$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中传递的空字符串的情况。

哇,这很有效!谢谢。现在有没有一种方法可以让这件事变得更好或更快呢?如果您只想从标题中找到响应代码,那么您可以查看