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);

代码修复

  1. 移除 $url = $_GET['url']; 这行代码。原始代码中错误地重新定义了函数参数 $url
  2. 移除 echo $status; 后面的空行
  3. 在调用 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 状态码信息,请确保正则表达式的正确性,避免出现错误结果。
PHP 检查 HTTP 状态码:修复代码示例

原文地址: http://www.cveoy.top/t/topic/bjLn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录