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配置心得包含MYSQL5乱码解决
Nov 20 PHP
PHP array_multisort() 函数的深入解析
Jun 20 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
Apr 24 PHP
PHP基本语法总结
Sep 06 PHP
微信公众平台接口开发入门示例
Dec 24 PHP
php实现判断访问来路是否为搜索引擎机器人的方法
Apr 15 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
Mar 28 PHP
php读取和保存base64编码的图片内容
Apr 22 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
Jun 22 PHP
thinkphp5引入公共部分header、footer的方法详解
Sep 14 PHP
php文件包含的几种方式总结
Sep 19 PHP
PHP isset empty函数相关面试题及解析
Dec 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
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
php多用户读写文件冲突的解决办法
2013/11/06 PHP
20个2014年最优秀的PHP框架回顾
2014/10/22 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
javascript学习笔记(十四) window对象使用介绍
2012/06/20 Javascript
JSON传递bool类型数据的处理方式介绍
2013/09/18 Javascript
页面加载完毕后滚动条自动滚动一定位置
2014/02/20 Javascript
js创建对象的区别示例介绍
2014/07/24 Javascript
AngularJS表单编辑提交功能实例
2015/02/13 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
Easyui笔记2:实现datagrid多行删除的示例代码
2017/01/14 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
vue一个页面实现音乐播放器的示例
2018/02/06 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
vue cli 全面解析
2018/02/28 Javascript
jQuery带控制按钮轮播图插件
2020/07/31 jQuery
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
Python中turtle作图示例
2017/11/15 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
详解Python是如何实现issubclass的
2019/07/24 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
python openvc 裁剪、剪切图片 提取图片的行和列
2019/09/19 Python
详解Python可视化神器Yellowbrick使用
2019/11/11 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
美国庭院家具购物网站:AlphaMarts
2019/04/10 全球购物
方正Java笔试题
2014/07/03 面试题
优秀大学生推荐信范文
2013/11/28 职场文书
简单而又朴实的个人求职信分享
2013/12/12 职场文书
行政助理工作职责范本
2014/03/04 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
心得体会格式及范文
2016/01/25 职场文书
MySQL选择合适的备份策略和备份工具
2022/06/01 MySQL