重新封装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 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
PHP中的按位与和按位或操作示例
Jan 27 PHP
完美实现wordpress禁止文章修订和自动保存的方法
Nov 03 PHP
PHP中字符安全过滤函数使用小结
Feb 25 PHP
php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
Dec 07 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
Dec 22 PHP
ThinkPHP实现登录退出功能
Jun 29 PHP
Laravel中批量赋值Mass-Assignment的真正含义详解
Sep 29 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
PHP实现从上往下打印二叉树的方法
Jan 18 PHP
PHP标准库(PHP SPL)详解
Mar 16 PHP
解决在Laravel 中处理OPTIONS请求的问题
Oct 11 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使用SWOOLE扩展实现定时同步 MySQL 数据
2017/04/09 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
JavaScript 调试器简介
2009/02/21 Javascript
分享10篇优秀的jQuery幻灯片制作教程及应用案例
2011/04/16 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
js控制的遮罩层实例介绍
2013/05/29 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
jquery将一个表单序列化为一个对象的方法
2013/12/02 Javascript
jquery实现的简单二级菜单效果代码
2015/09/22 Javascript
jQuery中each()、find()和filter()等节点操作方法详解(推荐)
2016/05/25 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
JS中利用FileReader实现上传图片前本地预览功能
2018/03/02 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
vscode下的vue文件格式化问题
2018/11/28 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
vue表单验证你真的会了吗?vue表单验证(form)validate
2019/04/07 Javascript
vue element-ui实现动态面包屑导航
2019/12/23 Javascript
详解Vue3 Composition API中的提取和重用逻辑
2020/04/29 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
Python设计实现的计算器功能完整实例
2017/08/18 Python
pycharm配置git(图文教程)
2019/08/16 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
2020/01/16 Python
印度购物网站:TATA CLiQ
2017/11/23 全球购物
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
社会实践心得体会
2014/01/03 职场文书
专业技术职务聘任书
2014/03/29 职场文书
人力资源管理专业应届生求职信
2014/04/24 职场文书
岗位工作说明书
2014/07/29 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
法定授权委托证明书
2015/06/18 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
zabbix agent2 监控oracle数据库的方法
2021/05/13 Oracle
python脚本框架webpy模板赋值实现
2021/11/20 Python