2011-06-06 99 views
-2

我想根据下面的代码生成行。有人能告诉我我做错了什么吗?我无法让错误报告在我所在的地方工作。你能够在while循环中使用cURL吗?用cURL远程检查HTTP状态

while ($row = mysql_fetch_array($result_entries)) 

    if ($row['active'] == "y") { 

    $ch = curl_init($row['url']); 

    curl_setopt($ch, CURLOPT_NOBODY, true); 
    curl_exec($ch); 
    $retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
    // $retcode > 400 -> not found, $retcode = 200, found. 
    curl_close($ch); 

    if ($retcode == '[4-5][0-9][0-9]'){ 
     echo "<tr class=\"bad"\"><td><a href=\"" . $row['code'] . "\" target=\"_blank\">". $row['code'] . "</a></td><td>" . $row['url'] . "</td><td>" . $row['requester'] . "</td></tr>\n\n"; 

    } else if ($retcode == '[2-3][0-9][0-9]'){ 
     echo "<tr class=\"good"\"><td><a href=\"" . $row['code'] . "\" target=\"_blank\">". $row['code'] . "</a></td><td>" . $row['url'] . "</td><td>" . $row['requester'] . "</td></tr>\n\n"; 

    } else { 
     echo "<tr class=\"inactive\"><td>". $row['code'] . "</td><td>" . $row['url'] . "</td><td>" . $row['requester'] . "</td></tr>\n\n"; 
    } 
} 
+0

'$ retcode =='[4-5] [0-9] [0-9]'是什么意思? – 2011-06-06 13:58:23

+0

请添加更多信息,以何种方式无法按预期工作?此外,'$ retcode'的数值比较会更好,在'if-elsif-else'块后面调用'curl_close()'可能是理智的,但这肯定不是你错误的原因。 – 2011-06-06 13:58:58

+0

我一直收到500错误,因为它们没有在这里打开错误报告。所以我不太确定,我也是一个PHP新手。它应该是着色行工作,破碎和无效。 – Bee 2011-06-06 14:51:31

回答

3

你应该在你的$retcode可变

if($retcode >= 400 && $retcode <= 599) { 
    // Code for 400> status here 
} else if ($retcode >= 200 && $retcode <= 399) { 
    // Code for 200-300 status Here 
} else { 
    // Fall through case here 
} 

代码中使用的数值进行比较时,没有结果的代码比较正确的字符串,(你正试图把一个正则表达式)。

数字比较将更快,更易于阅读和更安全的解决方案。

+0

谢谢我改变了它。不幸的是,它仍然不适合我。 – Bee 2011-06-06 14:52:11

0

它看起来像你试图在比较中使用正则表达式。 $retcode只是一个整数。它应该只是是这样的:

if ($retcode == 400){

您可以在$retcode使用preg_match()如果你想许多代码执行的同一块你如果,尽管它可能是更好的使用switch或大于小于,即if($retcode >= 400 && $retcode <= 599){

+0

请查看我的回答,他应该检查'$ retcode'是否在一个范围内,以复制他的非工作正则表达式的预期行为。 – 2011-06-06 14:38:14

+0

@Beaks你的答案更快,可能更干净,但我不明白downvote ...我的三个建议中的最后一个看起来是完全一样的代码,一个开关可以处理多个特定的代码,一个正则表达式可以以任何方式过滤代码。对不起,我是新来的(回答)。我仍然在学习苍蝇什么的。 – panda 2011-06-06 21:29:24