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 随机生成10位字符代码
Mar 26 PHP
一道关于php变量引用的面试题
Aug 08 PHP
PHP isset()与empty()的使用区别详解
Aug 29 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
使用Apache的htaccess防止图片被盗链的解决方法
Apr 27 PHP
php不用正则验证真假身份证
Nov 06 PHP
php中curl和file_get_content的区别
May 10 PHP
php实现window平台的checkdnsrr函数
May 27 PHP
php中的常用魔术方法汇总
Feb 14 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 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版本到PHP7
2015/02/06 PHP
php实现上传图片保存到数据库的方法
2015/02/11 PHP
PHP isset()与empty()的使用区别详解
2017/02/10 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
弹出广告特效(一个IP只弹出一次)的代码
2007/07/27 Javascript
JavaScript 学习笔记(七)字符串的连接
2009/12/31 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
js获取通过ajax返回的map型的JSONArray的方法
2014/01/09 Javascript
javascript中的取反再取反~~没有意义
2014/04/06 Javascript
php实例分享之实现显示网站运行时间
2014/05/20 Javascript
JavaScript学习小结之被嫌弃的eval函数和with语句实例详解
2016/08/01 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
完美解决axios在ie下的兼容性问题
2018/03/05 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
Python进程间通信之共享内存详解
2017/10/30 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
Python实现聊天机器人的示例代码
2018/07/09 Python
python中reader的next用法
2018/07/24 Python
python面向对象实现名片管理系统文件版
2019/04/26 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
Python中的上下文管理器相关知识详解
2019/09/19 Python
Python安装whl文件过程图解
2020/02/18 Python
Python实现密钥密码(加解密)实例详解
2020/04/26 Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
2020/05/13 Python
HTML5 Canvas的性能提高技巧经验分享
2013/07/02 HTML / CSS
全球最大的户外用品零售商之一:The House
2018/06/12 全球购物
如何理解transaction事务的概念
2015/05/27 面试题
少先队学雷锋活动总结范文
2014/03/09 职场文书
厨房管理计划书
2014/04/27 职场文书
高考励志标语
2014/06/05 职场文书
委托书格式
2014/08/01 职场文书
优秀教师先进事迹材料
2014/12/15 职场文书
MySQL 服务和数据库管理
2021/11/11 MySQL
动作冒险《Hell Is Us》将采用虚幻5 消灭怪物探索王国
2022/04/13 其他游戏