Осмысление HTTP-кода, возвращаемого CURL в PHP, и проверка URL - PullRequest
0 голосов
/ 19 октября 2019

Я пытался создать небольшую PHP-программу, которая будет иметь форму HTML, в которой пользователь будет вводить URL-адрес и нажимать кнопку «Отправить». Я пытался получить возвращенный HTTP-код из URL через CURL. Я понял, что возвращаемое значение 0 дается в двух ситуациях: 1) когда домен существует, но вы не можете подключиться к серверу. Сервер отказывается от соединения. 2) Когда хост не существует

Мой вопрос: как я могу быть уверен в любом из этих двух случаев, когда я получаю HTTP-код, равный 0?

Еще лучше, что должнопо моей логике, чтобы убедиться, что URL, указанный пользователем, не только правильно сформирован, но и принадлежит действующему веб-сайту, существующему в Интернете?

Мой код указан ниже:

        $html_brand = "www.google.com/ihhhkhkj";
        $ch = curl_init();
        $options = array(
            CURLOPT_URL            => $html_brand,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HEADER         => true,
            CURLOPT_FOLLOWLOCATION => true,
            //CURLOPT_ENCODING       => "",
            CURLOPT_AUTOREFERER    => true,
            CURLOPT_CONNECTTIMEOUT => 120,
            CURLOPT_TIMEOUT        => 120,
            CURLOPT_MAXREDIRS      => 10,
        );
        curl_setopt_array( $ch, $options );
        $response = curl_exec($ch); 
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        if ( $httpCode == 404 ){
            echo "Return code is {$httpCode} \n"
                .curl_error($ch);

            $this->form_validation->set_message("url_check", "URL is well-formed but still not valid!");

            return FALSE;

        }
        else if($httpCode == 0)
        {
            $this->form_validation->set_message("url_check", "Could not connect to the URL given! Connection timed out!");

            //is it a server timeout or non-existent site?

            return FALSE;
        }

        curl_close($ch);
    } 

1 Ответ

0 голосов
/ 20 октября 2019

Если код HTTP равен 0, вы можете использовать curl_error , чтобы выяснить, в чем проблема с вызовом curl_exec.

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