重新封装zend_soap实现http连接安全认证的php代码

yipeiwu_com6年前PHP代码库
复制代码 代码如下:

<?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正则表达式笔记与实例详解

PHP正则表达式笔记与实例详解

本文实例讲述了PHP正则表达式笔记与实例。分享给大家供大家参考,具体如下: 这里主要介绍如何在PHP使用正则表达式,并附带几个实例. 这两天工作用到了正则表达式,发现自己已经忘记的差不多...

连接到txt文本的超链接,不直接打开而是点击后下载的处理方法

服务器端两种处理方法,一个是apache或者iis or tomcat等服务器中进行设置,或者在程序中指定发送类型。 该信息属于http头部信息,php有直接进行头部信息操作的函数。 p...

php 备份数据库代码(生成word,excel,json,xml,sql)

单表备份代码:复制代码 代码如下:<?php    class Db    {    &n...

php实现获取文章内容第一张图片的方法

本文实例讲述了php实现获取文章内容第一张图片的方法。分享给大家供大家参考。具体分析如下: 采用php获取文章内容的第一张图片方法非常的简单,我们最常用的是使用正则了,感兴趣的朋友可以参...

PHP判断远程url是否有效的几种方法小结

PHP判断远程url是否有效的几种方法小结

解决办法: 使用PHP解决 使用file_get_contents函数,不过优缺点如果url无法访问,会出现终止程序问题 使用curl返回,然后判断是否正确执行 使用get_header...