php 获取访问页面的http状态码

什么是HTTP状态码

HTTP状态码是指由Web服务器给出的HTTP响应的状态码。判断HTTP返回的状态码来帮助理解一个请求过程中的结果,进而调试和修复请求问题。常见的状态码有200代表成功返回页面,404代表无法找到该页面等。

那么如何使用PHP获取页面的HTTP状态码呢?下面介绍两种方法。

使用cURL库获取HTTP状态码

cURL是一个广泛使用的互联网客户端,支持多个传输协议。我们可以使用cURL库的curl_getinfo函数获取HTTP头信息中的状态码。

$url = ‘https://www.example.com’;

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_exec($ch);

$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

首先建立一个对目标网站的curl请求。然后我们执行curl并通过curl_getinfo获取HTTP状态码(区分大小写)。最后关闭curl请求。

需要注意的是curl_exec函数的返回结果可能是文本、json,而不是HTML。在检测401、403和404等状态码时,这可能是个问题。必须通过其他方法处理结果才能具备通用性。

使用PHP函数获取HTTP状态码

PHP包含函数 get_headers,它可以从一个远程的文档中读取 HTTP header。

$url = "http://www.example.com";

$headers = @get_headers($url);

//当远程无法连接时返回 false,若成功则 $headers 包含所有响应头信息数组

if($headers){

$result = substr($headers[0], 9, 3);

}

通过调用函数 get_headers来读取HTTP响应头信息,可以访问返回的响应头信息数组,然后使用substr从中提取状态码。

这两种方法都可以获取HTTP状态码,为了通用性,我们可以封装成一个函数。

function get_httpcode($url) {

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_exec($ch);

$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

return $httpcode;

}

$url = "http://www.example.com";

echo get_httpcode($url);

将cURL提供的请求、检索HTTP状态码和关闭请求的方法封装成单个可重用的函数。我们可以将URL作为函数参数传递,以使它更具有灵活性。

后端开发标签