重新封装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 相关文章推荐
WINDOWS 2000下使用ISAPI方式安装PHP
Sep 05 PHP
PHP安装问题
Oct 09 PHP
一个PHP分页类的代码
May 18 PHP
php使用exec shell命令注入的方法讲解
Nov 12 PHP
php计算税后工资的方法
Jul 28 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
Mar 21 PHP
PHP读书笔记整理_结构语句详解
Jul 01 PHP
详解PHP中foreach的用法和实例
Oct 25 PHP
PHP开发中csrf攻击的简单演示和防范
May 07 PHP
iis 7下安装laravel 5.4环境的方法教程
Jun 14 PHP
php检查函数必传参数是否存在的实例详解
Aug 28 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
Sep 17 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
基于PHP文件操作的详细诠释
2013/06/21 PHP
php基于curl实现的股票信息查询类实例
2016/11/11 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
javascript replace()正则替换实现代码
2010/02/26 Javascript
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
50个比较实用jQuery代码段
2011/09/18 Javascript
jquery.post用法示例代码
2014/01/03 Javascript
浅谈JavaScript中的Math.atan()方法的使用
2015/06/14 Javascript
深入理解jQuery 事件处理
2016/06/14 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
js编写简单的聊天室功能
2017/08/17 Javascript
JavaScript满天星导航栏实现方法
2018/03/08 Javascript
Vue实现textarea固定输入行数与添加下划线样式的思路详解
2018/06/28 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
ES6扩展运算符和rest运算符用法实例分析
2020/05/23 Javascript
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
Django实现组合搜索的方法示例
2018/01/23 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
快速查找Python安装路径方法
2020/02/06 Python
Python3 集合set入门基础
2020/02/10 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
NULL是什么,它是怎么定义的
2015/05/09 面试题
C#笔试题和英文面试题
2013/02/07 面试题
后勤部经理岗位职责
2014/02/23 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
反腐倡廉观后感
2015/06/08 职场文书
大学生社会实践感想
2015/08/11 职场文书
Springboot集成kafka高级应用实战分享
2022/08/14 Java/Android