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 相关文章推荐
DOMXML函数笔记
Oct 09 PHP
PHP中实现图片的锐化
Oct 09 PHP
PHP操作mysql函数详解,mysql和php交互函数
May 19 PHP
php5.3中连接sqlserver2000的两种方法(com与ODBC)
Dec 29 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 PHP
windwos下使用php连接oracle数据库的过程分享
May 26 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
Nov 03 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
PHP中实现Bloom Filter算法
Mar 30 PHP
微信JSSDK分享功能图文实例详解
Apr 08 PHP
使用swoole 定时器变更超时未支付订单状态的解决方案
Jul 24 PHP
PHP 图片合成、仿微信群头像的方法示例
Oct 25 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
jQuery Ajax之load()方法
2009/10/12 Javascript
js中parseFloat(参数1,参数2)定义和用法及注意事项
2013/01/27 Javascript
js中replace的用法总结
2013/12/27 Javascript
浅析node.js中close事件
2014/11/26 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
基于html5和nodejs相结合实现websocket即使通讯
2015/11/19 NodeJs
整理JavaScript对DOM中各种类型的元素的常用操作
2016/05/05 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
JS生成不重复的随机数组的简单实例
2016/07/10 Javascript
js获取浏览器和屏幕的各种宽度高度
2017/02/22 Javascript
9种改善AngularJS性能的方法
2017/11/28 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
基于JavaScript实现留言板功能
2020/03/16 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
[03:42]2014DOTA2西雅图国际邀请赛 Navi战队巡礼
2014/07/07 DOTA
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
python字符串替换第一个字符串的方法
2019/06/26 Python
使用Pytorch来拟合函数方式
2020/01/14 Python
python模拟预测一下新型冠状病毒肺炎的数据
2020/02/01 Python
利用Python函数实现一个万历表完整示例
2021/01/23 Python
Godiva巧克力英国官网:比利时歌帝梵巧克力
2018/08/28 全球购物
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
大学毕业的自我鉴定
2013/10/08 职场文书
2014自主招生自荐信策略
2014/01/27 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
党的群众路线个人对照检查材料
2014/09/23 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
2014年班务工作总结
2014/12/02 职场文书
2014年财政局工作总结
2014/12/09 职场文书
创卫工作总结2015
2015/04/22 职场文书
陪护人员误工证明
2015/06/24 职场文书
2016入党积极分子考察评语
2015/12/01 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
muduo TcpServer模块源码分析
2022/04/26 Redis