php webservice中使用soapheader简单验证 实例

在学习webservice过程中。

由于公司服务器端不可能把数据公开。因此简单研究了下webservice身份验证相关。

看到了自带的soapheader可以有验证作用。

于是写下实例简单测试。


先放上代码:

以下为soapserver.php 服务器端内容

item[0]->value;  
        //$pwd =$value->item[1]->value;  
    if($value->username == 'admin'&& $value ->password=='123456') 
    {  
                 $this->Authenticated = true;  
                  
             } else {  
                 $this->Authenticated = FALSE;      
             }  
    } 
    //验证登录信息是否正确 
    function feline()
    {  
      
      if($this->Authenticated)
      	{  
         return '成功';  
        } 
         else 
        {  
         return '验证错误,请检查';      
        }  
    }
    //下面该函数功能为连接数据库,获取数据并转换为数组
    //下面这个函数是自己测试时为了测是否能获取数据库并返回值才写的,可以注释掉。
    function select()
    {
    	$mysql=@mysql_connect("localhost","root","");
		if (!$mysql)
  		{
  			die('Could not connect: ' . mysql_error());
 		}
		$mysql_database="weberp";
		$mysql_database=mysql_select_db($mysql_database); 
		$sql="select storelink from prices limit 200";
		$result = mysql_query($sql,$mysql);
		//遍历数据库 并把数据做成数组形式
		while($row = mysql_fetch_array($result)) 
		{ 
        	$array[]=$row;        
   		}
          //这里对身份验证是否成功做了个判断,不成功不返回数据库数据。
    	if($this->Authenticated)
    	{
    	return $array;
    	}
    	else
    		{return '0';}
    } 
    //上面这段内容可注释。 
} 
  
 $options = array('uri'=>'http://XXXXXXXXXX/');
 $server = new SoapServer(NULL,$options);
 try {
    $server->setClass('mysoapclass'); 
    $server->handle();
 } catch(SoapFault $fault) {
    echo 'SoapFault:'.$fault->faultstring;
 }
?>

以下为soapclient.php 客户端的内容.

username = $username;  
     $this->password = $password;  
    }  
}


 $options = array(
        'location'=>'http://XXXXXXX/soapservice.php',
        'uri'=>'http://XXXXXXX/'
        );
 $client = new SoapClient(NULL,$options);

 try {
     $select=$client->select(); //该行为获取数据库内容,不测试获取数据库可删。
 	 $auth = new authentication_header('admin', '123456');
 	 $authvalues = new SoapVar($auth, SOAP_ENC_OBJECT, 'authenticate','http://XXXXXXXX/'); 
 	 $header = new SoapHeader('http://XXXXXXXX/', 'authenticate', $authvalues,true); 
 	 $re=$client->__setSoapHeaders(array($header));
     echo $result =$client->__soapCall('feline',array());
     //以下为对验证信息的判断,有误输出字符串来提示,无误才输出数据库获取的数据。若不测试数据库可以删掉该判断。      
     if ($select=='0') {
     	echo "您的账号信息有误";
     }
     else
     {
     	     var_dump($select);
     } 
 	} 
 catch(SoapFault $fault) {
    var_dump($fault);
 }
?>

以上代码中,XXXXXXX表示你服务器端的地址。 身份验证主要为soapheaders 那段。

成功则返回字符“”成功“” ,否则返回"验证错误,请检查"。


你可能感兴趣的:(php,webservice)