重新封装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+JS无限级可伸缩菜单详解(简单易懂)
Jan 02 PHP
php date()日期时间函数详解
May 16 PHP
在PHP中使用反射技术的架构插件使用说明
May 18 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
如何判断php数组的维度
Jun 10 PHP
php+jQuery.uploadify实现文件上传教程
Dec 26 PHP
详细解读PHP的Yii框架中登陆功能的实现
Aug 21 PHP
PHP函数checkdnsrr用法详解(Windows平台用法)
Mar 21 PHP
详解PHP中websocket的使用方法
Sep 15 PHP
ThinkPHP简单使用memcache缓存的方法
Nov 15 PHP
如何判断php mysqli扩展类是否开启
Dec 24 PHP
PHP基于pdo的数据库操作类【可支持mysql、sqlserver及oracle】
May 21 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之第一天
2006/10/09 PHP
php下载文件,添加响应头的简单实例
2016/09/22 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
laravel实现于语言包的完美切换方法
2019/09/29 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
jQuery 使用手册(三)
2009/09/23 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
jQuery中index()的用法分析
2014/09/05 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
完美解决iview 的select下拉框选项错位的问题
2018/03/02 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
vue实现图片上传预览功能
2019/12/23 Javascript
Python端口扫描简单程序
2016/11/10 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
python队列Queue的详解
2019/05/10 Python
python操作文件的参数整理
2019/06/11 Python
基于python实现文件加密功能
2020/01/06 Python
Python如何执行精确的浮点数运算
2020/07/31 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
天猫精选:上天猫,就够了
2016/09/21 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
戴森英国官网:Dyson英国
2019/05/07 全球购物
2014大学辅导员工作总结
2014/12/02 职场文书
个人年终总结范文
2015/03/09 职场文书
2016年第32个教师节红领巾广播稿
2015/12/18 职场文书
Canvas跟随鼠标炫彩小球的实现
2021/04/11 Javascript
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript