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 和 MySQL 基础教程(四)
Oct 09 PHP
用php实现的获取网页中的图片并保存到本地的代码
Jan 05 PHP
PHP5中实现多态的两种方法实例分享
Apr 21 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
PHP产生不重复随机数的5个方法总结
Nov 12 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
php 解决substr()截取中文字符乱码问题
Jul 18 PHP
PHP错误和异常处理功能模块示例
Nov 12 PHP
thinkPHP5框架中widget的功能与用法详解
Jun 11 PHP
PHP的PDO大对象(LOBs)
Jan 27 PHP
PHP 实现重载
Mar 09 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
通过文字传递创建的图形按钮
2006/10/09 PHP
第五章 php数组操作
2011/12/30 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
PHP数组访问常用方法解析
2020/09/05 PHP
JavaScript打字小游戏代码
2011/12/26 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
JavaScript中奇葩的假值示例应用
2014/03/11 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
常用的JS验证和函数汇总
2014/12/23 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
JavaScript中的高级函数
2018/01/04 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
微信小程序聊天功能的示例代码
2020/01/13 Javascript
Openlayers实现距离面积测量
2020/09/28 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
2021/01/13 Vue.js
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
Python 抓取动态网页内容方案详解
2014/12/25 Python
python同时遍历两个list用法说明
2020/05/02 Python
21岁生日感言
2014/02/27 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
2014年防汛工作总结
2014/12/08 职场文书
校长一岗双责责任书
2015/05/09 职场文书
追悼会悼词大全
2015/06/23 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
Python中else的三种使用场景
2021/06/16 Python
详解python的异常捕获
2022/03/03 Python