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&amp;java(一)
Oct 09 PHP
PHP array_flip() 删除重复数组元素专用函数
May 16 PHP
php下删除一篇文章生成的多个静态页面
Aug 08 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
PHP+MYSQL会员系统的开发实例教程
Aug 23 PHP
php在线解压ZIP文件的方法
Dec 30 PHP
THINKPHP内容分页代码分享
Jan 14 PHP
PHP框架Laravel的小技巧两则
Feb 10 PHP
PHP之正则表达式捕获组与非捕获组(详解)
Jul 29 PHP
php+html5+ajax实现上传图片的方法
May 14 PHP
php中字符串和整数比较的操作方法
Jun 06 PHP
基于laravel Request的所有方法详解
Sep 29 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的朋友 经常问的一些问题。不断更新
2011/08/11 PHP
浅析php与数据库代码开发规范
2013/08/08 PHP
smarty半小时快速上手入门教程
2014/10/27 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
php命令行写shell实例详解
2018/07/19 PHP
Prototype 学习 工具函数学习($A方法)
2009/07/12 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
使用jsonp完美解决跨域问题
2014/11/27 Javascript
限制只能输入数字的实现代码
2016/05/16 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
2016/07/22 Javascript
使用JavaScript进行表单校验功能
2017/08/01 Javascript
JS动态添加元素及绑定事件造成程序重复执行解决
2017/12/07 Javascript
利用Console来Debug的10个高级技巧汇总
2018/03/26 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
js设计模式之代理模式及订阅发布模式实例详解
2019/08/15 Javascript
javascript实现留言板功能
2020/02/08 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
python中实现定制类的特殊方法总结
2014/09/28 Python
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
python实现多线程的两种方式
2016/05/22 Python
python3设计模式之简单工厂模式
2017/10/17 Python
python实现教务管理系统
2018/03/12 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
Python将8位的图片转为24位的图片实现方法
2018/10/24 Python
Python中修改字符串的四种方法
2018/11/02 Python
在Python中COM口的调用方法
2019/07/03 Python
Python坐标线性插值应用实现
2019/11/13 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
公务员中国梦演讲稿
2014/08/19 职场文书
中职毕业生自我鉴定
2014/09/13 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
2019企业给员工的慰问信
2019/06/24 职场文书
CSS 一行代码实现头像与国旗的融合
2021/10/24 HTML / CSS