重新封装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 相关文章推荐
WIN98下Apache1.3.14+PHP4.0.4的安装
Oct 09 PHP
一个简易需要注册的留言版程序
Oct 09 PHP
apache+php完美解决301重定向的两种方法
Jun 08 PHP
深入解析PHP内存管理之谁动了我的内存
Jun 20 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
PHP程序员基本要求和必备技能
May 09 PHP
ThinkPHP采用GET方式获取中文参数查询无结果的解决方法
Jun 26 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
php curl常用的5个经典例子
Jan 20 PHP
Yii框架实现对数据库的CURD操作示例
Sep 03 PHP
PHP实现15位身份证号转18位的方法分析
Oct 16 PHP
微信小程序发送订阅消息的方法(php 为例)
Oct 30 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
composer.lock文件的作用
2016/02/03 PHP
农历与西历对照
2006/09/06 Javascript
Prototype Template对象 学习
2009/07/19 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
2012/03/07 Javascript
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
使用jquery解析XML示例代码
2014/09/05 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
jquery编写日期选择器
2017/03/16 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
原生JS实现循环Nodelist Dom列表的4种方式示例
2018/02/11 Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
2018/03/02 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
详解Node.js读写中文内容文件操作
2018/10/10 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
详细介绍Python的鸭子类型
2016/09/12 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
python openpyxl使用方法详解
2019/07/18 Python
Python多叉树的构造及取出节点数据(treelib)的方法
2019/08/09 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
手工制作的意大利太阳镜和光学元件:Illesteva
2019/01/19 全球购物
北美女性服装零售连锁店:maurices
2019/06/12 全球购物
销售心得体会
2014/01/02 职场文书
2014端午节活动策划方案
2014/01/27 职场文书
工作散漫检讨书
2014/09/16 职场文书
2014年教育工作总结
2014/11/26 职场文书
繁星春水读书笔记
2015/06/30 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS