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 闭包特性在实际应用中的问题
Oct 30 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 PHP
深入phpMyAdmin的安装与配置的详细步骤
May 07 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
Apr 30 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 PHP
本地计算机无法启动Apache故障处理
Aug 08 PHP
php实现用于计算执行时间的类实例
Apr 18 PHP
thinkPHP实现MemCache分布式缓存功能
Mar 23 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
Nov 14 PHP
PHP实现随机数字、字母的验证码功能
Aug 01 PHP
PHP get_html_translation_table()函数用法讲解
Feb 16 PHP
php实现根据身份证获取精准年龄
Feb 26 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中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
JavaScript实现Sleep函数的代码
2007/03/04 Javascript
JQuery FlexiGrid的asp.net完美解决方案 dotNetFlexGrid-.Net原生的异步表格控件
2010/09/12 Javascript
js中function()使用方法
2013/12/24 Javascript
js操作数据库实现注册和登陆的简单实例
2016/05/26 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
浅谈JavaScript中的分支结构
2016/07/01 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
layui之select的option叠加问题的解决方法
2018/03/08 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
微信小程序模板template简单用法示例
2018/12/04 Javascript
微信小程序实现单列下拉菜单效果
2019/04/25 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
pycharm 将python文件打包为exe格式的方法
2019/01/16 Python
python3中的eval和exec的区别与联系
2019/10/10 Python
使用NumPy读取MNIST数据的实现代码示例
2019/11/20 Python
Jupyter notebook运行Spark+Scala教程
2020/04/10 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
将不规则的Python多维数组拉平到一维的方法实现
2021/01/11 Python
CSS3中媒体查询结合rem布局适配手机屏幕
2019/06/10 HTML / CSS
远东集团网络工程师面试题
2014/10/20 面试题
目标管理责任书
2014/04/15 职场文书
男女朋友协议书
2014/04/23 职场文书
大学生党员个人对照检查材料范文
2014/09/25 职场文书
公安机关纪律作风整顿个人剖析材料材料
2014/10/10 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
五年级学生期末评语
2014/12/26 职场文书
学校实习推荐信
2015/03/27 职场文书
原生JS实现飞机大战小游戏
2021/06/09 Javascript
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL
Java字符串逆序方法详情
2022/03/21 Java/Android