重新封装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 相关文章推荐
坏狼的PHP学习教程之第2天
Jun 15 PHP
一些PHP Coding Tips(php小技巧)[2011/04/02最后更新]
May 02 PHP
深入理解PHP之数组(遍历顺序)  Laruence原创
Jun 13 PHP
php读取mysql的简单实例
Jan 15 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
php curl中gzip的压缩性能测试实例分析
Nov 08 PHP
PHP中检索字符串的方法分析【strstr与substr_count方法】
Feb 17 PHP
php自定义函数实现统计中文字符串长度的方法小结
Apr 15 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
PHP实现动态压缩js与css文件的方法
May 02 PHP
thinkphp5.0整合phpsocketio完整攻略(绕坑)
Oct 12 PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 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
Get或Post提交值的非法数据处理
2006/10/09 PHP
PHP 编程的 5个良好习惯
2009/02/20 PHP
zend framework配置操作数据库实例分析
2012/12/06 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP正则匹配到2个字符串之间的内容方法
2018/12/24 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
Angularjs 基础入门
2014/12/26 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
微信小程序微信支付接入开发实例详解
2017/04/12 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
基于layui数据表格以及传数据的方式
2018/08/19 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
详解JavaScript的内存空间、赋值和深浅拷贝
2019/04/17 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
Python类的用法实例浅析
2015/05/27 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
PyQt5每天必学之组合框
2018/04/20 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
Python实现邮件发送的详细设置方法(遇到问题)
2021/01/18 Python
德国隐形眼镜店:LuckyLens
2018/07/29 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
生态养殖创业计划书
2014/05/06 职场文书
党务公开方案
2014/05/06 职场文书
综治工作心得体会
2014/09/11 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
大学学生会辞职信
2015/05/13 职场文书
归途列车观后感
2015/06/17 职场文书
《赵州桥》教学反思
2016/02/17 职场文书
如何利用map实现Nginx允许多个域名跨域
2021/03/31 Servers
python基础之while循环语句的使用
2021/04/20 Python
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python