PHP 检查 HTTP 状态码:修复代码示例
PHP 检查 HTTP 状态码:修复代码示例
以下是使用 PHP 检查 HTTP 状态码的代码示例,并已修复原始代码中的错误。
function gethttp($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url); // 获取内容url
curl_setopt($curl, CURLOPT_HEADER, 1); // 获取http头信息
curl_setopt($curl, CURLOPT_NOBODY, 1); // 不返回html的body信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 返回数据流,不直接输出
curl_setopt($curl, CURLOPT_TIMEOUT, 9); // 超时时长,单位秒
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 自动跟踪重定向
curl_exec($curl);
$httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
$status = '' . $httpCode;
echo $status;
$html = file_get_contents($url);
$search = '/HTTP:(.*?)/';
preg_match($search, $html, $Date);
if($Date[1]) {
return $Date[1];
} else {
return '未知';
}
}
$url = $_GET['url'];
gethttp($url);
代码修复
- 移除
$url = $_GET['url'];这行代码。原始代码中错误地重新定义了函数参数$url。 - 移除
echo $status;后面的空行。 - 在调用
gethttp函数时,传入$url参数。这里假设$url是从用户输入的表单中获取的,因此使用$_GET['url']。
代码说明
- 代码使用
curl函数库获取网页内容。 curl_setopt函数设置了curl函数库的一些参数,包括:CURLOPT_URL: 要获取的网页地址。CURLOPT_HEADER: 获取 HTTP 头信息。CURLOPT_NOBODY: 不返回网页内容。CURLOPT_RETURNTRANSFER: 返回数据流,不直接输出。CURLOPT_TIMEOUT: 超时时长,单位秒。CURLOPT_FOLLOWLOCATION: 自动跟踪重定向。
curl_exec函数执行curl操作。curl_getinfo函数获取curl操作的信息,包括 HTTP 状态码。curl_close函数关闭curl连接。- 代码使用
preg_match函数从网页内容中提取 HTTP 状态码信息。 - 最后,代码根据提取到的 HTTP 状态码信息返回结果。
使用说明
- 将代码保存为
gethttp.php文件。 - 在浏览器中访问
gethttp.php?url=http://www.example.com,即可查看http://www.example.com的 HTTP 状态码。
注意事项
- 代码中使用了
$_GET['url']获取用户输入的网页地址,请确保用户输入的网页地址安全可靠,避免恶意攻击。 - 代码使用了
file_get_contents函数获取网页内容,如果网页内容较大,可能会导致性能问题。 - 代码使用了正则表达式提取 HTTP 状态码信息,请确保正则表达式的正确性,避免出现错误结果。
原文地址: http://www.cveoy.top/t/topic/bjLn 著作权归作者所有。请勿转载和采集!