重新封装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 相关文章推荐
备份mysql数据库的php代码(一个表一个文件)
May 28 PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 PHP
微信支付开发教程(一)微信支付URL配置
May 28 PHP
PHP实现的json类实例
Jul 28 PHP
微信公众平台DEMO(PHP)
May 04 PHP
thinkPHP简单遍历数组方法分析
May 16 PHP
php 无限分类 树形数据格式化代码
Oct 11 PHP
Yii框架中jquery表单验证插件用法示例
Oct 18 PHP
PHP封装的多文件上传类实例与用法详解
Feb 07 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
原生php实现excel文件读写的方法分析
Apr 25 PHP
PHP defined()函数的使用图文详解
Jul 20 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 SPL使用方法和他的威力
2013/11/12 PHP
jQuery autocomplete插件修改
2009/04/17 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
js使用setTimeout实现定时炸弹的方法
2015/04/10 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
微信小程序实现留言功能
2018/10/31 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
Vue 嵌套路由使用总结(推荐)
2020/01/13 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
js实现坦克大战游戏
2020/02/24 Javascript
python实现BackPropagation算法
2017/12/14 Python
python实现求最长回文子串长度
2018/01/22 Python
python查看列的唯一值方法
2018/07/17 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
微信公众号token验证失败解决方案
2019/07/22 Python
python使用pandas抽样训练数据中某个类别实例
2020/02/28 Python
python3发送request请求及查看返回结果实例
2020/04/30 Python
Python logging日志库空间不足问题解决
2020/09/14 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
python 高阶函数简单介绍
2021/02/19 Python
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
医学专业毕业生推荐信
2013/11/14 职场文书
办理暂住证介绍信
2014/01/11 职场文书
《画风》教学反思
2014/04/16 职场文书
老龄工作先进事迹
2014/08/15 职场文书
学校标语口号大全
2015/12/26 职场文书
市场营销计划书
2019/04/24 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
Java Kafka 消费积压监控的示例代码
2021/07/01 Java/Android