Удаленная проверка статуса HTTP с помощью cURL - PullRequest
0 голосов
/ 06 июня 2011

Я пытаюсь сгенерировать строки на основе кода ниже.Может ли кто-нибудь сказать мне, что я делаю неправильно?Я не могу заставить сообщения об ошибках работать там, где я нахожусь.Вы можете использовать cURL в циклах while?

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";
    }
}

Ответы [ 2 ]

3 голосов
/ 06 июня 2011

Вы должны использовать числовые сравнения для вашей $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 голосов
/ 06 июня 2011

Похоже, вы пытаетесь использовать регулярное выражение в сравнении.$retcode будет просто целым числом.Это должно быть что-то вроде:

if ($retcode == 400){

Вы можете использовать preg_match() на $retcode, если хотите, чтобы много кодов выполняли один и тот же блок вашего if, хотя это можетлучше использовать switch или больше чем меньше, то есть if($retcode >= 400 && $retcode <= 599){.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...