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 相关文章推荐
一个用于网络的工具函数库
Oct 09 PHP
php 魔术方法使用说明
Oct 20 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
Jul 23 PHP
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
php获取服务器信息的实现代码
Feb 04 PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
Jun 25 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
Jun 24 PHP
memcache一致性hash的php实现方法
Mar 05 PHP
php中请求url的五种方法总结
Jul 13 PHP
PHP数字金额转换成中文大写显示
Jan 05 PHP
Yii框架getter与setter方法功能与用法分析
Oct 22 PHP
PHP RabbitMQ消息列队
May 11 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
php字符编码转换之gb2312转为utf8
2013/10/28 PHP
PHP进程同步代码实例
2015/02/12 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
php-fpm开启状态统计的方法详解
2017/06/23 PHP
分享5个非常有用的Laravel Blade指令
2018/05/30 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
nodejs读取memcache示例分享
2014/01/02 NodeJs
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
基于cookie实现zTree树刷新后展开状态不变
2017/02/28 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
利用JS做网页特效_大图轮播(实例讲解)
2017/08/09 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
基于Python os模块常用命令介绍
2017/11/03 Python
Python实现的双色球生成功能示例
2017/12/18 Python
Python实现对一个函数应用多个装饰器的方法示例
2018/02/09 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
pandas和spark dataframe互相转换实例详解
2020/02/18 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
python如何提升爬虫效率
2020/09/27 Python
css3实现动画的三种方式
2020/08/24 HTML / CSS
HolidayLettings英国:预订最好的度假公寓、别墅和自助式住宿
2019/08/27 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
介绍一下常见的木马种类
2014/11/15 面试题
关于环保的标语
2014/06/13 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
中秋节作文(五年级)之关于月亮
2019/09/11 职场文书
Python字符串的转义字符
2022/04/07 Python