文档章节

CURL和fsockopen两种方式POST数据并写入文件

letwang
 letwang
发布于 2013/12/25 16:22
字数 242
阅读 950
收藏 5
function http($host, $path, $post, $timeOut = 60) {
	if (function_exists ( 'curl_init' ) && function_exists ( 'curl_exec' )) {
		$ch = curl_init ( 'http://' . $host . $path );
		curl_setopt ( $ch, CURLOPT_HEADER, 0 );
		curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
		curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, $timeOut );
		curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, 'POST' );
		curl_setopt ( $ch, CURLOPT_POST, true );
		curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post );
		$body = curl_exec ( $ch );
		curl_close ( $ch );
		return $body;
	} else {
		$values = array ();
		foreach ( $post as $key => $value ) {
			$values [] = "$key=" . urlencode ( $value );
		}
		$data = implode ( '&', $values );
		
		$header = "POST " . $path . " HTTP/1.0\r\n"; // 使用HTTP/1.1协议内容会有异常
		$header .= "Host: " . $host . "\r\n";
		$header .= "Content-type: application/x-www-form-urlencoded\r\n";
		$header .= "Content-length: " . strlen ( $data ) . "\r\n";
		$header .= "Connection: close\r\n";
		$header .= "\r\n";
		$header .= $data . "\r\n";
		
		$body = '';
		$fp = fsockopen ( $host, 80, $errno, $errstr, $timeOut );
		fputs ( $fp, $header );
		while ( ! feof ( $fp ) ) {
			$body .= fgets ( $fp, 128 );
		}
		fclose ( $fp );
		return substr ( $body, strpos ( $body, "\r\n\r\n" ) + 4 );//fsockopen去除头部header关键步骤
	}
}
//http://my.oschina.net/cart/
$content = http ( 'www.oschina.net', '/', array ('k1' => 111, 'k2' => 2222) );
var_dump($content);
exit ();


fsockopen socket 无服务器限制 支持header、cookie、refer 挂马远程

fsockopen无阻塞 批量抓取页面、图片,批量采集


© 著作权归作者所有

共有 人打赏支持
letwang
粉丝 152
博文 64
码字总数 77075
作品 1
南京
技术主管
fsockopen无阻塞 批量抓取页面、图片,批量采集

function multiFsockopen($urlArr) { } $results = multiFsockopen ( array ( ) );//http://my.oschina.net/cart/foreach ( $results as $key => $result ) { }exit (); fsockopen socket 无......

letwang
2013/12/26
0
0
PHP:6种GET和POST请求发送方法

在i94web博客中,我试过了畅言和多说两种社会化评论框,后来还是抛弃了畅言,不安全。 无论是畅言还是多说,我都需要从远程抓取文章的评论数,然后存入本地数据库。对于多说,请求的格式如下...

snowing1990
2016/04/15
27
0
PHP-PHP如何以post形式发送xml数据

PHP如何以POST形式发送XML数据,PHP如何接收XML文件 准备两个PHP文件:一个是发送数据的postXml.php,另一个是接收数据的getXml.php 发送XML: postXml.php 第一种发送方式,也是推荐的方式, 使...

王永濤
2015/11/30
124
0
php发送get、post请求的几种方法

方法1: 用filegetcontents 以get方式获取内容 <?php $url='http://www.domain.com/'; $html = filegetcontents($url); echo $html; ?> 方法2: 用fopen打开url, 以get方式获取内容 <?php $fp ......

麦克
2012/09/24
0
0
提交数据的各种方式form,curl ,sockt,file_get_contents

1、手动构造http数据包实现http数据提交 这种方式一般不建议使用,除非是特别要求或必须应用时再使用,手动构造的http头数据的方式比较麻烦,而且实现起来代码也比较多.我只有在利用其他方式 实...

morebetter1
2015/08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

centos7安装rsync及两台机器进行文件同步

centos7安装rsync及两台机器进行文件同步 2017年12月21日 11:17:46 码农下的天桥 阅读数:2210 标签: centosrsync同步 更多 个人分类: 后端 所属专栏: 研发模式及运维 版权声明:本文为博...

linjin200
50分钟前
2
0
jpg、jpeg、png... 的区别

jpg、jpeg、png... 的区别 对于做设计这一行的人来说,这几个图片格式是最常用的,也是最常见的,几乎每一天都要与他们打交道。 刚刚入门的新人通常不知道在什么地方如何使用他们或者说如何更...

DemonsI
今天
6
0
白话SpringCloud | 第十章:路由网关(Zuul)进阶:过滤器、异常处理

前言 简单介绍了关于Zuul的一些简单使用以及一些路由规则的简单说明。而对于一个统一网关而言,需要处理各种各类的请求,对不同的url进行拦截,或者对调用服务的异常进行二次处理等等。今天,...

oKong
今天
4
0
Character的static方法

基本类型char的包装类是Character,使用的比较多,大家是比较熟悉的。 我只是觉得里面有很多static方法,平时不怎么用,学习一下怎么实现的,或许日后就用到了。 static int compare(char x,...

woshixin
今天
2
0
正则介绍_sed

10月17日任务 9.4/9.5 sed sed工具 匹配打印 -n 只打印匹配行,不然其他行也会打印出来 p 打印(配合-n使用) [root@centos7 tmp]# sed -n '/root/'p passwd root:x:0:0:root:/root:/bin/ba...

robertt15
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部