重新封装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
不要轻信 PHP_SELF的安全问题
Sep 05 PHP
浅析PHP程序防止ddos,dns,集群服务器攻击的解决办法
Jun 18 PHP
php生成随机密码自定义函数代码(简单快速)
May 10 PHP
使用PHP破解防盗链图片的一个简单方法
Jun 07 PHP
php实现两个数组相加的方法
Feb 17 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
Dec 17 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
php实用代码片段整理
Nov 12 PHP
php生成0~1随机小数的方法(必看)
Apr 05 PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 PHP
PHP实现数组转JSon和JSon转数组的方法示例
Jun 14 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
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
可缩放Reloaded-一个针对可缩放元素的复用组件
2007/03/10 Javascript
getElementsByTagName vs selectNodes效率 及兼容的selectNodes实现
2010/02/26 Javascript
JS删除数组元素的函数介绍
2013/03/27 Javascript
JS localStorage实现本地缓存的方法
2013/06/22 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
vue跳转页面的几种方法(推荐)
2020/03/26 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
Python生成随机密码的方法
2017/06/16 Python
PyQt5每天必学之工具提示功能
2018/04/19 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
英国家电直销:Appliances Direct
2016/09/22 全球购物
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
PHP中如何创建和修改数组
2012/05/02 面试题
安全教育演讲稿
2014/05/09 职场文书
篮球比赛口号
2014/06/10 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
职工小家建设活动方案
2014/08/25 职场文书
教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
2014年小学语文工作总结
2014/12/20 职场文书
联欢会开场白
2015/06/01 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
三年级作文之趣事作文
2019/11/04 职场文书
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021/04/28 Python
Win11 Build 21996.1 Dev版怎么样? win11系统截图欣赏
2021/11/21 数码科技