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 相关文章推荐
获得Google PR值的PHP代码
Jan 28 PHP
基于PHP 面向对象之成员方法详解
May 04 PHP
解析php中eclipse 用空格替换 tab键
Jun 24 PHP
php数组编码转换示例详解
Mar 11 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
PHP ajax 异步执行不等待执行结果的处理方法
May 27 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
Jan 05 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 PHP
PHP迭代器接口Iterator用法分析
Dec 28 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
Apr 21 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
mysql时区问题
2008/03/26 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
PHP 类与构造函数解析
2017/02/06 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
Laravel相关的一些故障解决
2020/08/19 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
基于jQuery选择器的整理集合
2013/04/26 Javascript
Angular实现form自动布局
2016/01/28 Javascript
easyui window refresh 刷新两次的解决方法(推荐)
2016/05/18 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
jQuery图片缩放插件smartZoom使用实例详解
2017/08/25 jQuery
基于vue.js组件实现分页效果
2018/12/29 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
Node.js 在本地生成日志文件的方法
2020/02/07 Javascript
python实现电子词典
2020/04/23 Python
Python中的pprint折腾记
2015/01/21 Python
Python中模块pymysql查询结果后如何获取字段列表
2017/06/05 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Python爬虫抓取指定网页图片代码实例
2020/07/24 Python
python实现简单的tcp 文件下载
2020/09/16 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
医学毕业生自我鉴定
2013/10/30 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
政府四风问题整改措施
2014/10/04 职场文书
2015年财务部年度工作总结
2015/05/19 职场文书
千与千寻观后感
2015/06/04 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
关于JavaScript轮播图的实现
2021/11/20 Javascript