php查看请求头信息获取远程图片大小的方法分享

如果要获取远程图片的大小,一种普遍的做法是先将远程图片的内容获取回来,再用strlen计算长度,这种方法需要将图片下载下来,然后才能计算。如果图片很大的话,那么网络传输就要花费不少时间,效率显然低下。笔者提供一个方法来提高效率,主要是利用http的头信息。

当访问网页的时候,服务器会返回请求的头信息,其中Content-Length表示请求的网页内容大小。如果请求的是图片,那么Content-Length就表示图片的大小。根据这个,只需要发送head请求获取返回的头信息就OK了。在php中,可以通过fsockopen方法获取头信息。365bet体育在线官网_365体育投注平台_365在线体育消息如下:

365bet体育在线官网_365体育投注平台_365在线体育消息如下:

$fp = fsockopen("www.baidu.com", 80, $errno, $errstr, 30);
if ($fp) {
??? //这里请求设置为HEAD就行了
??? $out = "HEAD /img/baidu_sylogo1.gif HTTP/1.1\r\n";
??? $out .= "Host: www.baidu.com\r\n";
??? $out .= "Connection: Close\r\n\r\n";
??? fwrite($fp, $out);
??? while (!feof($fp)) {
??????? $header = fgets($fp);
??????? if (stripos($header, 'Content-Length') !== false) {
??????????? $size = trim(substr($header, strpos($header, ':') + 1));
??????????? echo $size;
??????? }
??? }
??? fclose($fp);
} else {
??? echo "$errstr ($errno)";
}

和发起GET请求一样,只需要将请求类型GET设置为HEAD就可以了。请求的主机和路径,修改成自己需要的就可以了。

小结:

php里也可以使用get_headers来获取头信息,不过笔者测试过这个函数,是GET请求,详情参考:php函数get_headers是HEAD请求还是GET请求。

另外有的服务器可能会屏蔽HEAD请求,如果被屏蔽了,就只能老老实实用GET请求了。如果要这样做的话,可以直接用现成的函数getimagesize。

时间: 2013-12-22

PHP获取短链接跳转后的真实地址和响应头信息的方法

获取到一个短连接,需要将短连接转换成真实的网址,通过查资料,发现 PHP 提供了一个函数 get_headers() ,可以完成这个任务,先把 头部信息获取到,然后再分析跳转地址即可: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: $url = 'http://t.cn/h5mwx'; $headers = get_headers($url, TRUE); print_r($headers); //输出跳转到的网址 echo $headers['Location']; 附完整数组: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: Array (

php通过获取头信息判断图片类型的方法

本文实例讲述了php通过获取头信息判断图片类型的方法.分享给大家供大家参考.具体实现方法如下: $filename = '617.gif' ; function pictype ( $file ) { /*$png_header = "/x89/x50/x4e/x47/x0d/x0a/x1a/x0a"; $jpg_header = "/xff/xd8";*/ $header = file_get_contents ( $file , 0 , NULL , 0 , 5

PHP设置头信息及取得返回头信息的方法

本文实例讲述了PHP设置头信息及取得返回头信息的方法.分享给大家供大家参考,具体如下: 设置请求的头信息,我们可以用header函数,可以用fsockopen,可以用curl等,本文主要讲的是用curl来设置头信息,并取得返回后的头信息. 一.请求方设置自己的头信息,header.php

php header函数的常用http头设置

//ok header('HTTP/1.1 200 OK'); //设置一个404头: header('HTTP/1.1 404 Not Found'); //设置地址被永久的重定向 header('HTTP/1.1 301 Moved Permanently'); //转到一个新地址 header('Location: http://www.example.org/'); //文件延迟转向: header('Refresh: 10; url=http://www.example.org/');

PHP获取http请求的头信息实现步骤

PHP手册提供了现成的函数: getallheaders (PHP 4, PHP 5) getallheaders - Fetch all HTTP request headers 说明 array getallheaders ( void ) Fetches all HTTP headers from the current request. This function is an alias for apache_request_headers(). Please read theapach

PHP 使用header函数设置HTTP头的示例解析 表头

如下所示: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: //定义编码? header( 'Content-Type:text/html;charset=utf-8 '); //Atom? header('Content-type: application/atom+xml'); //CSS? header('Content-type: text/css'); //Javascript? header('Content-type: text/javascript'); //JPEG Image? header('Con

php下通过伪造http头破解防盗链的365bet体育在线官网_365体育投注平台_365在线体育消息

伪造referer实例365bet体育在线官网_365体育投注平台_365在线体育消息,主要用于一些突破防盗链,比如图片,软件等等 这里就直接给出完整的程序吧,具体的应用可以自己修改. 我这里给出的例子是很简单的,其实可以从这个例子中发展出很多的应用.比如隐藏真实的URL地址--嘿嘿,具体的就自己分析去吧 这里新建一个文件file.php.后面的参数就是需要伪造referfer的目标地址吧.如:file.php/http://www.xxx.xxx/xxx.mp3 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下:

使用PHP破解防盗链图片的一个简单方法

有自己的主机一般都会设计"防盗链", 其实包括图片防盗链,和下载防盗链等,如:1.使用.htaccess设置防盗链 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: RewriteEngine onRewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www\.)?jb51.net/.*$ [NC]RewriteRule \.(gif|jpg)$ http://www.jb51.net/image.gif [R,L] 2.ngin

用Asp隐藏文件路径,实现防盗链 的365bet体育在线官网_365体育投注平台_365在线体育消息

用Asp隐藏文件路径,实现防盗链? 如果我们知道一个静态文件的实际路径如:http://www.xx.com/download/51windows.pdf,如果服务器没有作特别的限制设置,我们就可以毫不费力的把它下载下来!当网站提供51windows.pdf下载时,怎么样才能让下载者无法得到他的实际路径呢!本文就来介绍如何使用Asp来隐藏文件的实际下载路径.? 我们在管理网站文件时,可以把扩展名一样的文件放在同一个目录下,起一个比较特别名字,例如放pdf文件目录为the_pdf_file_s,把

ASP.NET 图片加水印防盗链实现365bet体育在线官网_365体育投注平台_365在线体育消息

首先建一个类: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Drawing; /// ///Class1 的摘要说明 /// public class Class1:IHttpHandler //调用接口 { public Class1() { // //TODO: 在

破解图片防盗链的365bet体育在线官网_365体育投注平台_365在线体育消息(asp/php)测试通过

php版的365bet体育在线官网_365体育投注平台_365在线体育消息比较简单: 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: 使用方法:将文件保存成i.php上传到根目录 将不能外链的图片地址改成http://你的域名p.php?p=图片地址 asp版,网上用的比较多的 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: <% Dim url, body, myCache url = Request.Que

php 破解防盗链图片函数

复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下:

简单的防盗链功能365bet体育在线官网_365体育投注平台_365在线体育消息(iframe)

var a=document.URL ; var b=a.indexOf('jb51.net'); if (b [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

php防盗链的常用方法小结

1.简单防盗链 复制365bet体育在线官网_365体育投注平台_365在线体育消息 365bet体育在线官网_365体育投注平台_365在线体育消息如下: $ADMIN[defaulturl] = "http://jb51.net/404.htm";//盗链返回的地址 $okaysites = array("http://jb51.net/","http://www.jb51.net"); //白名单 $ADMIN[url_1] = "http://jb51.net/temp/download/";//下载地点1 $ADMIN[url_2]

IIS防盗链 ISAPI Rewrite图片防盗链规则写法

通过G.CN和B.CN搜索后得出了几种不同的方案,例如网站程序的URL伪装法.服务器端的收费插件法和ISAPI-REWRITE的规则过滤法等,考虑自身网站结构和钱包的困难问题,最终选择了后者,即现在流行用来做伪静态的ISAPI Rewrite书写规则来实现我的防盗链"梦想". 为什么说是梦想呢?首先表示惋惜,懒人我搜来了一大票经过无数次转载而来的文章,把现呈的365bet体育在线官网_365体育投注平台_365在线体育消息应用后发现要么根本不起作用,要么就是效果达不到我想要的,几经周折后终于把这原本认为可以轻易借鉴照搬的防盗链给完成了,恨那些只

PHP实现防盗链的方法分析