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定时计划任务的实现方法详解
Jun 06 PHP
php实现加减法验证码代码
Feb 14 PHP
php多文件上传实现代码
Feb 20 PHP
PHP队列用法实例
Nov 05 PHP
Laravel 5框架学习之Laravel入门和新建项目
Apr 07 PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 PHP
简单PHP会话(session)说明介绍
Aug 21 PHP
详谈php ip2long 出现负数的原因及解决方法
Apr 05 PHP
搜索附近的人PHP实现代码
Feb 11 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
在Laravel中使用GuzzleHttp调用第三方服务的API接口代码
Oct 15 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
JS启动应用程序的一个简单例子
2008/05/11 Javascript
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
理解javascript对象继承
2016/04/17 Javascript
jQuery+Ajax实现用户名重名实时检测
2017/06/01 jQuery
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
javascript异常处理实现原理详解
2020/02/17 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
vue 插槽简介及使用示例
2020/11/19 Vue.js
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
Python遍历目录中的所有文件的方法
2016/07/08 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
django 使用 request 获取浏览器发送的参数示例代码
2018/06/11 Python
详解Django+uwsgi+Nginx上线最佳实战
2019/03/14 Python
使用matlab或python将txt文件转为excel表格
2019/11/01 Python
详解python破解zip文件密码的方法
2020/01/13 Python
使用Python脚本从文件读取数据代码实例
2020/01/19 Python
Python虚拟环境的创建和包下载过程分析
2020/06/19 Python
pycharm 快速解决python代码冲突的问题
2021/01/15 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
小学校园活动策划
2014/01/30 职场文书
淘宝中秋节活动方案
2014/01/31 职场文书
职工运动会感言
2014/02/07 职场文书
五年级学生评语
2014/04/22 职场文书
企业宣传口号
2014/06/12 职场文书
报名委托书
2015/01/29 职场文书
求职意向书范本
2015/05/11 职场文书
指导老师鉴定意见
2015/06/05 职场文书
论语读书笔记
2015/06/26 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
Centos7 Shell编程之正则表达式、文本处理工具详解
2022/08/05 Servers