13.04.2020 06:45

Получение HTTP-кода в PHP с помощью cURL

Получение HTTP-кода в PHP с помощью cURL

В этой статье я приведу пример того, как получить HTTP-код в PHP с помощью cURL. Вы можете проверить, доступен ли сайт и какой код состояния возвращает сервер. Вы также можете узнать, перенаправляет ли сервер вас на другой URL-адрес, и определить, каким будет последний URL-адрес.

function getHttpCode($url, $followLocation = false, $maxRedirects = 10, &$lastUrl = '')
{
    // Options
    $curlOptions = [
        CURLOPT_HEADER => true,
        CURLOPT_NOBODY => true,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_CONNECTTIMEOUT => 10,
    ];

    if ($followLocation) {
        $curlOptions[CURLOPT_FOLLOWLOCATION] = true;
        $curlOptions[CURLOPT_MAXREDIRS] = $maxRedirects;
    }

    // Initialization
    $ch = curl_init($url);

    // Set options
    curl_setopt_array($ch, $curlOptions);

    // Execute request
    curl_exec($ch);

    // Get HTTP code
    $result = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    // Get last URL
    $lastUrl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);

    // Close the resource
    curl_close($ch);

    return (int) $result;
}

Давайте проверим получение HTTP-кода (ожидаемый результат — 200):

print_r(getHttpCode('https://www.google.com'));

/**
[output]
200
 */

Теперь рассмотрим случай с перенаправлением (ожидаемый результат — 302):

print_r(getHttpCode('https://maps.google.com'));

/**
[output]
302
 */

Вы должны установить параметр $followLocation = true, чтобы определить последний URL-адрес. Вы также можете указать максимальное количество перенаправлений с помощью параметра $maxRedirects. Давайте определим последний URL-адрес из предыдущего примера:

getHttpCode('https://maps.google.com', true, 10, $lastUrl);
print_r($lastUrl);

/**
[output]
https://www.google.com/maps?hl=en
 */

Другие статьи