文档章节

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

letwang
 letwang
发布于 2013/12/25 16:22
字数 242
阅读 931
收藏 5
点赞 1
评论 0
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
粉丝 140
博文 67
码字总数 76298
作品 0
南京
技术主管
fsockopen无阻塞 批量抓取页面、图片,批量采集

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

let ⋅ 2013/12/26 ⋅ 0

PHP:6种GET和POST请求发送方法

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

snowing1990 ⋅ 2016/04/15 ⋅ 0

PHP-PHP如何以post形式发送xml数据

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

王永濤 ⋅ 2015/11/30 ⋅ 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

PHP获取网页内容的几种方法

方法1: 用filegetcontents 以get方式获取内容 <?php $url='http://www.domain.com/?para=123'; $html = filegetcontents($url); echo $html; ?> 方法2:用filegetcontents函数,以post方式获取......

李世晨 ⋅ 2013/03/27 ⋅ 0

提交数据的各种方式form,curl ,sockt,file_get_contents

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

morebetter1 ⋅ 2015/08/14 ⋅ 0

php中 curl, fsockopen ,file_get_contents 三个函数 比较

赵永斌: 有些时候用filegetcontents()调用外部文件,容易超时报错。换成curl后就可以.具体原因不清楚 curl 效率比filegetcontents()和fsockopen()高一些,原因是CURL会自动对DNS信息进行缓存(...

lixiaokai2008 ⋅ 2013/09/26 ⋅ 8

php 不等待返回的实现方法(异步调用)

PHP异步执行的常用方式常见的有以下几种,可以根据各自优缺点进行选择: 1.客户端页面采用AJAX技术请求服务器 优点:最简单,也最快,就是在返回给客户端的HTML代码中,嵌入AJAX调用,或者,...

钟良 ⋅ 2016/07/06 ⋅ 0

php中curl、fsockopen的应用

最近要用到通过post上传文件,网上盛传的有curl的post提交和fsockopen,其中curl最简单,于是从最简单的说起。 这是简单的将一个变量post到另外一个页面 $url = ''; $data = array('a'=> 'b'...

zyt_1978 ⋅ 2016/03/16 ⋅ 0

file_get_contents("php://input")的使用方法

$data = filegetcontents("php://input"); php://input 是个可以访问请求的原始数据的只读流。 POST 请求的情况下,最好使用 php://input 来代替 $HTTPRAWPOSTDATA,因为它不依赖于特定的 ph...

leycau ⋅ 2015/10/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从零开始搭建Risc-v Rocket环境---(1)

为了搭建Rocke环境,我买了一个2T的移动硬盘,安装的ubuntu-16.04 LTS版。没有java8,gcc是5.4.0 joe@joe-Inspiron-7460:~$ java -version程序 'java' 已包含在下列软件包中: * default-...

whoisliang ⋅ 25分钟前 ⋅ 0

大数据学习路线(自己制定的,从零开始学习大数据)

大数据已经火了很久了,一直想了解它学习它结果没时间,过年后终于有时间了,了解了一些资料,结合我自己的情况,初步整理了一个学习路线,有问题的希望大神指点。 学习路线 Linux(shell,高并...

董黎明 ⋅ 30分钟前 ⋅ 0

systemd编写服务

一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。 如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。 ...

勇敢的飞石 ⋅ 33分钟前 ⋅ 0

mysql 基本sql

CREATE TABLE `BBB_build_info` ( `community_id` varchar(50) NOT NULL COMMENT '小区ID', `layer` int(11) NOT NULL COMMENT '地址层数', `id` int(11) NOT NULL COMMENT '地址id', `full_......

zaolonglei ⋅ 41分钟前 ⋅ 0

安装chrome的vue插件

参看文档:https://www.cnblogs.com/yulingjia/p/7904138.html

xiaoge2016 ⋅ 44分钟前 ⋅ 0

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2、查询所有数据的大小: select concat(round(sum(da...

源哥L ⋅ 今天 ⋅ 0

两个小实验简单介绍@Scope("prototype")

实验一 首先有如下代码(其中@RestController的作用相当于@Controller+@Responsebody,可忽略) @RestController//@Scope("prototype")public class TestController { @RequestMap...

kalnkaya ⋅ 今天 ⋅ 0

php-fpm的pool&php-fpm慢执行日志&open_basedir&php-fpm进程管理

12.21 php-fpm的pool pool是PHP-fpm的资源池,如果多个站点共用一个pool,则可能造成资源池中的资源耗尽,最终访问网站时出现502。 为了解决上述问题,我们可以配置多个pool,不同的站点使用...

影夜Linux ⋅ 今天 ⋅ 0

微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin ⋅ 今天 ⋅ 0

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部