1. 程式人生 > >php webservice中使用soapheader簡單驗證 例項

php webservice中使用soapheader簡單驗證 例項

在學習webservice過程中。

由於公司伺服器端不可能把資料公開。因此簡單研究了下webservice身份驗證相關。

看到了自帶的soapheader可以有驗證作用。

於是寫下例項簡單測試。

先放上程式碼:

以下為soapserver.php 伺服器端內容

<?php
/*
 * 定義一個SOAP伺服器 
 */
ini_set("soap.wsdl_cache_enabled", "0"); 
//建立一個類
class mysoapclass 
{  
    private $Authenticated =FALSE;
    //定義一個判斷的函式,來識別客戶端是否為非法入侵。 
    public function authenticate($value)
    {            
        //$name =$value->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()
    {
    	[email protected]_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 客戶端的內容.
<?php
/*
 * 定義一個SOAP客戶端 
 */
header('Content-Type: text/html; charset=utf-8');
ini_set("soap.wsdl_cache_enabled", "0"); 
class authentication_header 
{  
     var $username;  
     var $password;  
     public function __construct($username, $password) 
    {  
     $this->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使用soapheader簡單驗證 例項

在學習webservice過程中。 由於公司伺服器端不可能把資料公開。因此簡單研究了下webservice身份驗證相關。 看到了自帶的soapheader可以有驗證作用。 於是寫下例項簡單測試。 先放上程式碼: 以下為soapserver.php 伺服器端內容 <?

基於Java簡單驗證碼設計

基於servlet環境 如下簡單生成圖形驗證碼 1)新增新類,如下程式碼 @WebServlet("/randomCode") public class RandomCodeServlet extends HttpServlet { private st

分享php四種webservice實現的簡單架構方法及例項

本人所瞭解的webservice有以下幾種:PHP本身的SOAP,開源的NUSOAP,商業版的PHPRPC,以及使用二進位制傳輸資料流的HessianPHP,那麼一下就簡單的介紹下這幾種webservice在php中的使用,雖然網上也有很多這方面的資料,但是這是我個人實踐所得,當然也是從網上找的資料

Linux的定時任務簡單操作例項

今天,我懷著一顆感恩的心,寫了一個小小的定時任務,細想還是寫個簡單的例子吧,希望能幫到你!   首先我在/usr/local/資料夾下建立了一個檔案,hah.sh檔案 在hah.sh裡面編寫shell指令碼 看看,此時我已經再搞事情了 然後吶,咱們先學個知識點  

php完整表單驗證例項

<!DOCTYPE HTML> <html> <head> <style> .error{color:#FF0000} </style> </head> <body> <?php $nameErr=$em

.NETQuartz任務排程器的簡單應用例項

1.首先從NuGet中安裝Quartz,安裝最新版本就OK 2.新建一個Job類實現Quart中的IJob介面用於執行業務邏輯,程式碼如下: class CheckUpdateJob : IJob { public async Task Exec

Django JWT 簡單的 實現登陸驗證 -- obtain_jwt_token

首先先宣告以下本次進行登陸驗證操作的環境: Django框架中,在專案名同名的檔案包下建立一個users子應用(正常流程下,咱們在註冊時,已經將這個子應用建立好了);具體的一些檔案可以參考下圖。 當前,在使用JWT之前,我相信大家應該知道把JWT安裝一下的吧 pip install

php classpublic,private,protected,static的區別,以及例項

一,public,private,protected的區別 public:許可權是最大的,可以內部呼叫,例項呼叫等。 protected: 受保護型別,用於本類和繼承類呼叫。 private: 私有型別,只有在本類中使用。 二,例項 <?php  

html簡單例項演示(checkbox)的使用

演示一個小小的例子:在購物車裡面,我們能夠勾選自己所選的商品,然後能夠顯示出相應的價格。 1,首先顯示出相應的介面: 相關程式碼: <body> 商品列表:<br/>

javaMongoDB的簡單應用例項

1 首先載入 MongoDB的jar包。下載Jar包連結 2然後進行相應的配置。如我當前專案是在web-pom.xml 的的節點下配置。 <dependency> <groupId>org.mo

PHP的資料驗證,使用respect/validation

簡介 資料的驗證(validation)是經常用的一個操作,通常是使用正則表示式的方式進行驗證。但是,“當你嘗試使用正則表示式解決一個問題時候,那麼,現在你有兩個問題了。”   PHP在5.2.0以後內建了一個filter 擴充套件可以用於資料的過濾和淨化,這個內建擴充套件的最大問題是功能太弱

php開發經常用到的例項

1.PHP解析url並得到url中的引數 $url = 'http://www.baidu.com/index.php?m=content&c=index&a=lists&ca

簡單編寫php驗證類,教你如何寫好php程式(含多種驗證規則)

很多人在開發網站的時候往往只是通過簡單的js驗證,當你一不小心在js中多寫了個逗號或者點號,ie6無法識別就直接跳過驗證了。其實最安全的做法還是需要在服務端對使用者輸入的資料做驗證的。本人寫了個簡單的php驗證類,含多種驗證規則,供大家學習參考。原文連結 <?php

C#呼叫Axis2釋出的帶SoapHeader使用者驗證WebService(通過測試)

C#呼叫Axis2釋出的帶SoapHeader使用者驗證的WebService 環境: 提供的服務是Axis2開發的,我方用C#呼叫,開發環境是VS2010 起因:合作公司提供了一個WebService供我呼叫,為了保證安全性,要求在SoapHeader中帶使用者名

Shiro簡單的一個身份驗證例子

Shiro作為一個Java安全框架,身份驗證是它最基本的功能。 首先給出shiro的Maven配置 <dependencies> <dependency>

.net寫的webservice,使用soapheader來保證安全性

首先,需要從SoapHeader派生一個類,全部程式碼如下:using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Servic

docker php容器簡單添加seaslog拓展

容器 style apple pac dock 安裝redis 現在 spa 區別 最近有個項目用到了seaslog,因為之前調試php的容器已經搭好了,不想再通過dockerfile重新搭建了,搜了半天沒有東西可以裝,就仿照著安裝redis拓展操作了一頓 1.wget h

Python語句基本的規則與特殊字元簡單操作例項

#coding=utf8 ''' Python語句中基本的規則與特殊字元: 1.井號(#)表示之後的字元為Python註釋 2.換行(\n)是標準的行分隔符(通常一個語句一行) 3.反斜線(\)繼續上

Java WebService 簡單例項

WebService到底是什麼? Web Service也叫XML Web Service WebService是一種可以接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:通過SOAP在Web上提供的軟體服務,使用WSDL檔

正則表示式學習筆記一 :e-mail和tel簡單驗證/php

分別在前端和後端實現對錶單(E-mail和 Telphone)的驗證 廢話不多,程式碼如下... 前端實現利用正則表示式對e-mail和telphone的驗證 regex_form_relizea.html檔案 <!DOCTYPE html> <html