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 相关文章推荐
PHP6 先修班 JSON实例代码
Aug 23 PHP
使用Linux五年积累的一些经验技巧
Jun 20 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
ThinkPHP框架安全实现分析
Mar 14 PHP
深入浅析PHP无限极分类的案例教程
May 09 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
PHP7常量数组用法分析
Sep 26 PHP
PHP 7.1新特性的汇总介绍
Dec 16 PHP
PHP实现的简单对称加密与解密方法实例小结
Aug 28 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
PHP通过get方法获得form表单数据方法总结
Sep 12 PHP
php实现小程序支付完整版
Oct 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
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
2015/12/19 PHP
CentOS 7.2 下编译安装PHP7.0.10+MySQL5.7.14+Nginx1.10.1的方法详解(mini版本)
2016/09/01 PHP
PHP自定义函数实现格式化秒的方法
2016/09/14 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
用客户端js实现带省略号的分页
2013/04/27 Javascript
jQuery实现自动与手动切换的滚动新闻特效代码分享
2015/08/27 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
javascript特殊文本输入框网页特效
2016/09/13 Javascript
用瀑布流的方式在网页上插入图片的简单实现方法
2016/09/23 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
JavaScript实时更新当前的时间的示例代码
2020/07/15 Javascript
详解实现vue的数据响应式原理
2021/01/20 Vue.js
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python实现Pig Latin小游戏实例代码
2018/02/02 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
python实现类之间的方法互相调用
2018/04/29 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
Python3 tkinter 实现文件读取及保存功能
2019/09/12 Python
Python的几种主动结束程序方式
2019/11/22 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
2020/04/26 Python
Python流程控制语句的深入讲解
2020/06/15 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
HTML5 Canvas渐进填充与透明实现图像的Mask效果
2013/07/11 HTML / CSS
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
行政经理的岗位职责
2013/11/23 职场文书
大专会计自我鉴定
2014/02/06 职场文书
MySQL利用UNION连接2个查询排序失效详解
2021/11/20 MySQL