当前位置: 首页 > news >正文

关于php操作http header

1、用 php 获取 http header 信息

<?php
$headers = getallheaders();
print_r($headers);
?>

2、用 php 生成 http header 信息

3、php 直接用 socket 来产生和读取相应的 http header 信息,参考例程如下:

引用自(http://www.bigbold.com/snippets/posts/show/1207)

function remote_file_size ($url){
$head = "";
$url_p = parse_url($url);
$host = $url_p["host"];
if(!preg_match("/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/",$host)){
// a domain name was given, not an IP
$ip=gethostbyname($host);
if(!preg_match("/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/",$ip)){
//domain could not be resolved
return -1;
}
}
$port = intval($url_p["port"]);
if(!$port) $port=80;
$path = $url_p["path"];
//echo "Getting " . $host . ":" . $port . $path . " ...";

$fp = fsockopen($host, $port, $errno, $errstr, 20);
if(!$fp) {
return false;
} else {
fputs($fp, "HEAD " . $url . " HTTP/1.1\r\n");
fputs($fp, "HOST: " . $host . "\r\n");
fputs($fp, "User-Agent: http://www.example.com/my_application\r\n");
fputs($fp, "Connection: close\r\n\r\n");
$headers = "";
while (!feof($fp)) {
$headers .= fgets ($fp, 128);
}
}
fclose ($fp);
//echo $errno .": " . $errstr . "<br />";
$return = -2;
$arr_headers = explode("\n", $headers);
// echo "HTTP headers for <a href='" . $url . "'>..." . substr($url,strlen($url)-20). "</a>:";
// echo "<div class='http_headers'>";
foreach($arr_headers as $header) {
// if (trim($header)) echo trim($header) . "<br />";
$s1 = "HTTP/1.1";
$s2 = "Content-Length: ";
$s3 = "Location: ";
if(substr(strtolower ($header), 0, strlen($s1)) == strtolower($s1)) $status = substr($header, strlen($s1));
if(substr(strtolower ($header), 0, strlen($s2)) == strtolower($s2)) $size = substr($header, strlen($s2));
if(substr(strtolower ($header), 0, strlen($s3)) == strtolower($s3)) $newurl = substr($header, strlen($s3));
}
// echo "</div>";
if(intval($size) > 0) {
$return=intval($size);
} else {
$return=$status;
}
// echo intval($status) .": [" . $newurl . "]<br />";
if (intval($status)==302 && strlen($newurl) > 0) {
// 302 redirect: get HTTP HEAD of new URL
$return=remote_file_size($newurl);
}
return $return;
}

相关文章:

  • 力扣 反转链表II
  • 本周技术关注:Awstats、Mrtg、Webalizer How-TO Articles
  • 力扣打卡:有效的字母异同位
  • Hibernate 3.2 SQL函数返回类型从Integer变为Long
  • 浅谈vue中index.html、main.js、App.vue、index.js之前的关系以及加载过程
  • 忠厚开发者与“厚道”甲方II(超级Demo)——CSDN外包实践(38)
  • eladmin前端 学习笔记
  • 外包频道服务能力共建,项目顾问CRM管理——CSDN外包实践(39)
  • js中map与foreach的区别
  • em与rem的区别与使用
  • AI编辑器设想
  • export default 与 export 区别
  • 启动用户实例的进程时出错(Sql Server Exoress)
  • java setter 的链式调用
  • [需求]需求分析能力之二:引入领域模型
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • Centos6.8 使用rpm安装mysql5.7
  • js写一个简单的选项卡
  • Linux下的乱码问题
  • Next.js之基础概念(二)
  • nginx 负载服务器优化
  • python学习笔记-类对象的信息
  • React Native移动开发实战-3-实现页面间的数据传递
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 分享几个不错的工具
  • 浮现式设计
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 手写一个CommonJS打包工具(一)
  • 通过几道题目学习二叉搜索树
  • 新版博客前端前瞻
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • #includecmath
  • #pragma预处理命令
  • #Z2294. 打印树的直径
  • (06)Hive——正则表达式
  • (C++17) std算法之执行策略 execution
  • (C语言)共用体union的用法举例
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (转)Unity3DUnity3D在android下调试
  • (转)程序员技术练级攻略
  • .htaccess配置重写url引擎
  • .java 9 找不到符号_java找不到符号
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET NPOI导出Excel详解
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net程序集学习心得
  • .net分布式压力测试工具(Beetle.DT)
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • :not(:first-child)和:not(:last-child)的用法
  • @ComponentScan比较
  • @取消转义
  • [ACTF2020 新生赛]Include
  • [ajaxupload] - 上传文件同时附件参数值