重新封装zend_soap实现http连接安全认证的php代码


Posted in PHP onJanuary 12, 2011
<?php 
class MyFramework_Soap_server extends Zend_Soap_Server { 
protected $_login = ''; 
protected $_password = ''; 
public function __construct($wsdl = null, array $options = null) { 
parent::__construct($wsdl,$options); 
if(isset($options['login'])){ 
$this->_login=$options['login']; 
$this->_password=$options['password']; 
$this->_authenticate(); 
} 
} 
private function _authenticate(){ 
$this->setAuthenticate($this->_login,$this->_password); 
} 
public function setHttpLogin($login){ 
$this->_login=$login; 
} 
public function setHttpPassword($password){ 
$this->_password=$password; 
if(isset($this->_login)){ 
$this->_authenticate(); 
} 
} 
public function setAuthenticate($login,$password){ 
if ($_SERVER['PHP_AUTH_USER']!=$login || $_SERVER['PHP_AUTH_PW']!=$password) { 
header('WWW-Authenticate: Basic realm="MyFramework Realm"'); 
header('HTTP/1.0 401 Unauthorized'); 
echo "You must enter a valid login ID and password to access this resource.\n"; 
exit; 
} 
} 
} 
?>

<?php 
class Soap_server_test { 
public $view = ''; 
public $params = ''; 
public $requestObj = ''; 
public $dbObj = ''; 
function __construct() { 
$this->view = $GLOBALS['view']; 
$this->params = $GLOBALS['params']; 
$this->requestObj = $GLOBALS['requestObj']; 
$this->dbObj = $GLOBALS['dbObj']; 
} 
function indexAction(){ 
if(isset($_GET['wsdl'])) { 
$autodiscover = new MyFramework_Soap_AutoDiscover(); 
$autodiscover->setClass('Model_Service_SoapClassSetTest'); 
$autodiscover->handle(); 
exit; 
} else { 
//$options= array('encoding' => 'UTF-8','login'=>'tangjian','password'=>'123456'); 
$options= array('encoding' => 'UTF-8'); 
$soap = new MyFramework_Soap_Server("http://tj.MyFramework.com/default/soap_server_test/index?wsdl",$options); 
$soap->setHttpLogin('tangjian'); 
$soap->setHttpPassword('123456'); 
$soap->setClass('Model_Service_SoapClassSetTest'); 
$soap->handle(); 
exit; 
} 
} 
function clientAction() { 
//$options= array('encoding' => 'UTF-8','login'=>'tangjian','password'=>'123456', 
// 'compression' =>SOAP_COMPRESSION_GZIP); 
$options= array('encoding' => 'UTF-8', 
'compression' =>SOAP_COMPRESSION_GZIP); 
$client = new MyFramework_Soap_Client('http://tj.MyFramework.com/default/soap_server_test/index?wsdl',$options); 
$client->setHttpLogin('tangjian'); 
$client->setHttpPassword('123456'); 
$result=$client->getPass('tang',"man"); 
print_r($result); 
} 
} 
?>
PHP 相关文章推荐
Zend Studio 无法启动的问题解决方法
Dec 04 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
php中fsockopen用法实例
Jan 05 PHP
php去除字符串中空字符的常用方法小结
Mar 17 PHP
用PHP代码给图片加水印
Jul 01 PHP
laravel学习教程之关联模型
Jul 30 PHP
PHP中include/require/include_once/require_once使用心得
Aug 28 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
laravel请求参数校验方法
Oct 10 PHP
php 变量未定义等错误的解决方法
Jan 12 #PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 #PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
Jan 12 #PHP
PHP日期处理函数 整型日期格式
Jan 12 #PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 #PHP
DEDE采集大师官方留后门的删除办法
Jan 08 #PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
Jan 07 #PHP
You might like
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
PHP统计目录中文件以及目录中目录大小的方法
2016/01/09 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
javascript Ext JS 状态默认存储时间
2009/02/15 Javascript
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
jQuery之选择组件的深入解析
2013/06/19 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
2014/10/29 Javascript
node.js中的fs.ftruncate方法使用说明
2014/12/15 Javascript
了不起的node.js读书笔记之node.js中的特性
2014/12/22 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
js中 javascript:void(0) 用法详解
2015/08/11 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
jQuery实现点击任意位置弹出层外关闭弹出层效果
2016/10/19 Javascript
jquery validation验证表单插件
2017/01/07 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
python处理大日志文件
2019/07/23 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
python map比for循环快在哪
2020/09/21 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
Html5 audio标签样式的修改
2016/01/28 HTML / CSS
非凡女性奢华谦虚风格:The Modist
2017/10/28 全球购物
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
2014年药品销售工作总结
2014/12/16 职场文书
前台接待员岗位职责
2015/04/15 职场文书
交通事故责任认定书
2015/08/06 职场文书
先进个人主要事迹范文
2015/11/04 职场文书
从贫穷到富有,是知识技能和学习力的差别
2019/08/20 职场文书
python 命令行传参方法总结
2021/05/25 Python
纯html+css实现打字效果
2021/08/02 HTML / CSS