重新封装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 相关文章推荐
最省空间的计数器
Oct 09 PHP
建立动态的WML站点(三)
Oct 09 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
浅析get与post的一些特殊情况
Jul 28 PHP
php实现只保留mysql中最新1000条记录
Jun 18 PHP
php生成mysql的数据字典
Jul 07 PHP
全面解析PHP面向对象的三大特征
Jun 10 PHP
yii gridview实现时间段筛选功能
Aug 15 PHP
phpStudy配置多站点多域名和多端口的方法
Sep 01 PHP
php实现数字补零的方法总结
Sep 12 PHP
win10下 php安装seaslog扩展的详细步骤
Dec 04 PHP
Yii 实现数据加密和解密
Mar 09 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
最省空间的计数器
2006/10/09 PHP
php auth_http类库进行身份效验
2009/03/19 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP中使用FFMPEG获取视频缩略图和视频总时长实例
2014/05/04 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
PHP的cookie与session原理及用法详解
2019/09/27 PHP
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
jQuery语法高亮插件支持各种程序源代码语法着色加亮
2013/04/27 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
JAVASCRIPT模式窗口中下载文件无法接收iframe的流
2013/10/11 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
使用Node.js给图片加水印的方法
2016/11/15 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
vue组件实例解析
2017/01/10 Javascript
JavaScript实现星星等级评价功能
2017/03/22 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
微信小程序实现搜索历史功能
2020/03/26 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
Javascript模块化机制实现原理详解
2020/04/02 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
[03:55]2016国际邀请赛中国区预选赛首日TOP10精彩集锦
2016/06/27 DOTA
python批量获取html内body内容的实例
2019/01/02 Python
python实现输入任意一个大写字母生成金字塔的示例
2019/10/27 Python
python交互模式基础知识点学习
2020/06/18 Python
css3绘制百度的小度熊
2018/10/29 HTML / CSS
音乐学个人的自荐书范文
2013/11/26 职场文书
美发店5.1活动方案
2014/01/24 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
党支部三会一课计划
2014/09/24 职场文书
会计实训总结范文
2015/08/03 职场文书
详细了解java监听器和过滤器
2021/07/09 Java/Android