重新封装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 相关文章推荐
session 的生命周期是多长
Oct 09 PHP
十天学会php之第七天
Oct 09 PHP
ionCube 一款类似zend的PHP加密/解密工具
Jul 25 PHP
PHP中的string类型使用说明
Jul 27 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
PHP中使用asort进行中文排序失效的问题处理
Aug 18 PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 PHP
10个php函数实用却不常见
Oct 13 PHP
解决yii2左侧菜单子级无法高亮问题的方法
May 08 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
PHP PDO数据库操作预处理与注意事项
Mar 16 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+Html+缓存
2006/11/25 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
简单解决微信文章图片防盗链问题
2016/12/17 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
jQuery中triggerHandler()方法用法实例
2015/01/19 Javascript
12306验证码破解思路分享
2015/03/25 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
javascript中this关键字详解
2016/12/12 Javascript
JS获取字符对应的ASCII码实例
2017/09/10 Javascript
详解bootstrap用dropdown-menu实现上下文菜单
2017/09/22 Javascript
js定时器实现倒计时效果
2017/11/05 Javascript
ajax请求+vue.js渲染+页面加载的示例
2018/02/11 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
Egg.js 中 AJax 上传文件获取参数的方法
2018/10/10 Javascript
小程序实现留言板
2018/11/02 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
jQuery表单校验插件validator使用方法详解
2020/02/18 jQuery
JS通过识别id、value值对checkbox设置选中状态
2020/02/19 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
vue实现分页的三种效果
2020/06/23 Javascript
Python中正则表达式的用法实例汇总
2014/08/18 Python
Python中字典和JSON互转操作实例
2015/01/19 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
Python异常处理操作实例详解
2018/05/10 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
python多线程使用方法实例详解
2019/12/30 Python
Pytorch的mean和std调查实例
2020/01/02 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
民主生活会剖析材料
2014/09/30 职场文书
党的群众路线教育实践活动整改落实情况自查报告
2014/10/28 职场文书
总经理聘用协议书
2015/09/21 职场文书
高中班主任寄语
2019/06/21 职场文书
python实现批量提取指定文件夹下同类型文件
2021/04/05 Python
Nginx报404错误的详细解决方法
2022/07/23 Servers