php socket方式提交的post详解


Posted in PHP onJuly 19, 2008

<? 
/* 
** POST报文到主机 
*/ 
function PostToHost($url, $data) { 
$url = parse_url($url); 
if (!$url) return "couldn\'t parse url"; 
if (!isset($url[\'port\'])) { $url[\'port\'] = ""; } 
if (!isset($url[\'query\'])) { $url[\'query\'] = ""; } 

$encoded = ""; 

while (list($k,$v) = each($data)) { 
$encoded .= ($encoded ? "&" : ""); 
$encoded .= rawurlencode($k)."=".rawurlencode($v); 

$port = $url[\'port\'] ? $url[\'port\'] : 80; 
$fp = fsockopen($url[\'host\'], $port, $errno, $errstr); 
if (!$fp) return "Failed to open socket to $url[host] $port ERROR: $errno - $errstr"; 

fputs($fp, sprintf("POST %s%s%s HTTP/1.0\\n", $url[\'path\'], $url[\'query\'] ? "?" : "", $url[\'query\'])); 
fputs($fp, "Host: $url[host]\\n"); 
fputs($fp, "Content-type: application/x-www-form-urlencoded\\n"); 
fputs($fp, "Content-length: " . strlen($encoded) . "\\n"); 
fputs($fp, "Connection: close\\n\\n"); 

fputs($fp, "$encoded\\n"); 

$line = fgets($fp,1024); 
if (!eregi("^HTTP/1\\.. 200", $line)) return; 

$results = ""; $inheader = 1; 
while(!feof($fp)) { 
$line = fgets($fp,1024); 
if ($inheader && ($line == "\\n" || $line == "\\r\\n")) { 
$inheader = 0; 

elseif (!$inheader) { 
$results .= $line; 


fclose($fp); 

return $results; 
}/* end function PostToHost */ 
?>

PHP 相关文章推荐
PHP+AJAX实现无刷新注册(带用户名实时检测)
Jan 02 PHP
php中用文本文件做数据库的实现方法
Mar 27 PHP
php实现用户在线时间统计详解
Oct 08 PHP
php多文件上传实现代码
Feb 20 PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 PHP
PHP读取配置文件类实例(可读取ini,yaml,xml等)
Jul 28 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
yii2中添加验证码的实现方法
Jan 09 PHP
PHP批量去除BOM头内容信息代码
Mar 11 PHP
PHP正则表达式匹配替换与分割功能实例浅析
Feb 04 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
Oct 12 PHP
thinkPHP框架乐观锁和悲观锁实例分析
Oct 30 PHP
php minixml详解
Jul 19 #PHP
php正则校验用户名介绍
Jul 19 #PHP
PHP批量生成缩略图的代码
Jul 19 #PHP
Discuz 模板引擎的封装类代码
Jul 18 #PHP
PHP令牌 Token改进版
Jul 18 #PHP
php下intval()和(int)转换使用与区别
Jul 18 #PHP
PHP入门学习的几个不错的实例代码
Jul 13 #PHP
You might like
javascript中的location用法简单介绍
2007/03/07 Javascript
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
2013/11/22 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
js实现适配不同的屏幕大小
2017/04/10 Javascript
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
使用uni-app开发微信小程序的实现
2019/12/13 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
以Python的Pyspider为例剖析搜索引擎的网络爬虫实现方法
2015/03/30 Python
老生常谈Python进阶之装饰器
2017/05/11 Python
python实现决策树分类(2)
2018/08/30 Python
Python面向对象程序设计类的多态用法详解
2019/04/12 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
python实现tail -f 功能
2020/01/17 Python
Python列表切片常用操作实例解析
2020/03/10 Python
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
Haggar官网:美国男装品牌
2020/02/16 全球购物
爱我中华教学反思
2014/04/28 职场文书
婚纱店策划方案
2014/05/22 职场文书
淘宝店策划方案
2014/06/07 职场文书
抗震救灾标语
2014/06/26 职场文书
四风个人对照检查材料思想汇报(办公室通用版)
2014/10/07 职场文书
论文致谢词范文
2015/05/14 职场文书
干部理论学习心得体会
2016/01/21 职场文书
pytorch实现线性回归以及多元回归
2021/04/11 Python
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript