理解PHP中CURL返回的HTTP代码并验证URL

理解PHP中CURL返回的HTTP代码并验证URL,php,curl,Php,Curl,我试图制作一个小的PHP程序,它将有一个HTML表单,用户将在其中输入URL并单击submit。我试图通过CURL从URL获取返回的HTTP代码。我推测在两种情况下会给出0的返回值:1)当域存在但无法连接到服务器时。服务器拒绝连接。2) 当主机不存在时 我的问题是,当我得到一个等于0的HTTP代码时,如何确定这两种情况之一 更好的是,我的逻辑应该是什么,以确保用户提供的URL不仅格式正确,而且属于互联网上存在的有效网站 我的代码如下: $html_brand = "www.goo

我试图制作一个小的PHP程序,它将有一个HTML表单,用户将在其中输入URL并单击submit。我试图通过CURL从URL获取返回的HTTP代码。我推测在两种情况下会给出0的返回值:1)当域存在但无法连接到服务器时。服务器拒绝连接。2) 当主机不存在时

我的问题是,当我得到一个等于0的HTTP代码时,如何确定这两种情况之一

更好的是,我的逻辑应该是什么,以确保用户提供的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);
    } 

如果HTTP代码为0,则可以使用来找出
curl\u exec
调用的问题所在

使用它,您至少应该能够弄清楚这是否是一个域问题。