文档章节

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

letwang
 letwang
发布于 2013/12/25 16:22
字数 242
阅读 957
收藏 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
粉丝 169
博文 54
码字总数 81441
作品 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 调用远程url的六种方法小结(修正版)

示例代码1: 用filegetcontents 以get方式获取内容 示例代码2: 用fopen打开url, 以get方式获取内容 示例代码3:用filegetcontents函数,以post方式获取url 示例代码4:用fsockopen函数打开url...

hansonwong
11/19
0
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

没有更多内容

加载失败,请刷新页面

加载更多

基于Sentry实现数据访问权限控制

Sentry初识 Sentry是适用于Hadoop生态环境、基于角色的授权管理系统,可以模块化集成到HDFS、Hive、Impala。它是一个策略引擎,运行定义授权规则,以校验用户对数据模型的访问请求。 授权粒度...

hblt-j
12分钟前
0
0
First Bad Version(leetcode278)

You are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is......

woshixin
44分钟前
1
0
executor 和task 优先于线程(68)

java.util.concurrent 包里有一个Executor 框架 基于接口的任务执行工具 只需要一行代码 提交一个runnable 方法 优雅的终止(必须做到,不然虚拟机可能不会退出) 对于负载不重的服务 Execut...

Java搬砖工程师
44分钟前
1
0
一条SQL查询语句是如何执行的

123

writeademo
47分钟前
3
0
CSS中position属性( absolute | relative | static | fixed )详解

四个属性的特点 static:无特殊定位,对象遵循正常文档流。top,right,bottom,left等属性不会被应用。 relative:对象遵循正常文档流,但将依据top,right,bottom,left等属性在正常文档流...

简心
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部