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+oracle 分页类
Oct 09 PHP
openPNE常用方法分享
Nov 29 PHP
set_include_path和get_include_path使用及注意事项
Feb 02 PHP
php数组去重的函数代码
Feb 03 PHP
基于php 随机数的深入理解
Jun 05 PHP
php导入大量数据到mysql性能优化技巧
Dec 29 PHP
PHP和Mysql中转UTF8编码问题汇总
Oct 10 PHP
php实现微信公众号无限群发
Oct 11 PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 PHP
PHP简单实现模拟登陆功能示例
Sep 15 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 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
解析link_mysql的php版
2013/06/30 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
php实现计数器方法小结
2015/01/05 PHP
php+ajax无刷新分页实例详解
2015/12/07 PHP
Joomla调用系统自带编辑器的实现方法
2016/05/05 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
csdn 博客的css样式 v3
2009/02/24 Javascript
js Event对象的5种坐标
2011/09/12 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
2015/03/05 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
通过cmd进入python的实例操作
2019/06/26 Python
python 实现手机自动拨打电话的方法(通话压力测试)
2019/08/08 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
tensorflow使用CNN分析mnist手写体数字数据集
2020/06/17 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
中间件的定义
2016/08/09 面试题
医大实习自我鉴定
2013/12/07 职场文书
团委竞选演讲稿
2014/04/24 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
任命书模板
2014/06/04 职场文书
大学生安全责任书
2014/07/25 职场文书
“六查”、“三学”、“三干”查摆问题整改措施
2014/09/27 职场文书
会议承办单位欢迎词
2015/09/30 职场文书
无线电知识基础入门篇
2022/02/18 无线电