重新封装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 相关文章推荐
JS中encodeURIComponent函数用php解码的代码
Mar 01 PHP
PHP 验证码不显示只有一个小红叉的解决方法
Sep 30 PHP
php获取301跳转URL简单实例
Dec 16 PHP
解读PHP中的垃圾回收机制
Aug 10 PHP
yii分页组件用法实例分析
Dec 28 PHP
PHP下载远程图片并保存到本地方法总结
Jan 22 PHP
php倒计时出现-0情况的解决方法
Jul 28 PHP
PHP单例模式简单用法示例
Jun 23 PHP
laravel 5.4中实现无限级分类的方法示例
Jul 27 PHP
php实现微信支付之现金红包
May 30 PHP
一文掌握PHP Xdebug 本地与远程调试(小结)
Apr 23 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
Oct 18 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
FCKeditor添加自定义按钮
2008/03/27 PHP
php addslashes和mysql_real_escape_string
2010/01/24 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
详解JavaScript函数
2015/12/01 Javascript
jQuery.ajax实现根据不同的Content-Type做出不同的响应
2016/11/03 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
2020/02/12 Javascript
原生JS实现留言板
2020/03/26 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
Python下rrdtool模块的基本使用方法
2015/11/13 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
python中将正则过滤的内容输出写入到文件中的实例
2018/10/21 Python
详解python配置虚拟环境
2019/04/08 Python
np.dot()函数的用法详解
2020/01/17 Python
使用numpngw和matplotlib生成png动画的示例代码
2021/01/24 Python
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
介绍一下JNDI的基本概念
2013/07/26 面试题
大学生村官事迹材料
2014/01/21 职场文书
应届护士求职信范文
2014/01/26 职场文书
小学国旗下的演讲稿
2014/08/28 职场文书
科技馆观后感
2015/06/08 职场文书
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript