一个soap传输webservice框架(服务端)
需要手动在common文件夹下建立一个configure.wsdl文件api文件夹是webservice接口。common文件夹是常用方法、以及类库。user/admin.php里面设置登录密码server.php是服务端目前wsdl在程序中自动生成
需要手动在common文件夹下建立一个configure.wsdl文件
api文件夹是webservice接口。
common文件夹是常用方法、以及类库。
user/admin.php里面设置登录密码
server.php是服务端
目前wsdl在程序中自动生成
api文件夹是webservice接口。
common文件夹是常用方法、以及类库。
user/admin.php里面设置登录密码
server.php是服务端
目前wsdl在程序中自动生成
<?php
date_default_timezone_set ( 'PRC' );
$function = array();
require_once 'common/db.php';
require_once 'user/admin.php';
require_once 'api/Example.php';
require_once 'common/function.php';
//自动生成wsdl文件
$wsdl = "<?xml version='1.0' encoding='utf-8'?><definitions name=\"configure\" targetNamespace=\"urn:configure\" xmlns:typens=\"urn:configure\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" xmlns=\"http://schemas.xmlsoap.org/wsdl/\"><!--注册服务端请求、响应的函数和参数-->";
$message = "";
$port = "<portType name=\"serverPortType\">";
$binding = "<binding name=\"serverBinding\" type=\"typens:serverPortType\"><soap:binding style=\"rpc\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>";
foreach ($function as $name => $parts){
$message .= "<message name=\"".$name."\"><!--参数名称与类型-->";
foreach ($parts as $part => $type){
$message .= "<part name=\"".$part."\" type=\"xsd:".$type."\"/>";
}
$message .= "</message><message name=\"".$name."Response\"><part name=\"".$name."Return\" type=\"xsd:string\"/></message>";
$port .= "<operation name=\"".$name."\"><input message=\"typens:".$name."\"/><output message=\"typens:".$name."Response\"/></operation>";
$binding .= "<operation name=\"".$name."\"><soap:operation soapAction=\"urn:serverAction\"/><input><soap:body namespace=\"urn:configure\" use=\"encoded\" encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/></input><output><soap:body namespace=\"urn:configure\" use=\"encoded\" encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"/></output></operation>";
$functions[] = $name;
}
$port .= "</portType>";
$binding .= "</binding>";
$wsdl .= $message.$port.$binding."<service name=\"configureService\"><port name=\"serverPort\" binding=\"typens:serverBinding\"><soap:address location=\"http://localhost/webservice/server.php\"/></port></service></definitions>";
$file = fopen("common/configure.wsdl","w");
fwrite($file, $wsdl);
fclose($file);
$db = new db();
$service = new SoapServer('common/configure.wsdl');
$service->addFunction($functions);
$service->handle();
2. [代码]user/admin.php 跳至 [1] [2] [3] [4] [全屏预览]
<?php
$function['admin'] = array('user' => 'string', 'pwd' => 'string');
function admin($user, $pwd){
if ($user === 'root' && $pwd =='123456') {
return '1';
}else {
return '0';
}
}
3. [代码](mysqli)db.php 跳至 [1] [2] [3] [4] [全屏预览]
<?php
defined ( 'HOST' ) || define ( 'HOST', 'localhost' );
defined ( 'USER' ) || define ( 'USER', 'XXX' );
defined ( 'PASSWORD' ) || define ( 'PASSWORD', 'XXX' );
defined ( 'DB' ) || define ( 'DB', 'XXX' );
class db{
public static $_mysqli;
public static $_stmt;
/**
* 构造函数
*/
function __construct(){
self::$_mysqli = new mysqli(HOST, USER, PASSWORD, DB);
self::$_mysqli->query("set names utf8");
}
/**
*
* @return boolean
*/
function ping(){
return self::$_mysqli->ping();
}
/**
*
* @param 需要插入或者更新的参数键值对 $args
* @return 一个字符串,需要插入或者更新的字段
*/
private function getFields($args){
$fields = '';
foreach ($args as $k=>$v){
if ($v === '') {
continue;
}
$fields .= "`". $k ."`='". $v ."', ";
}
return substr($fields, 0, -2);
}
/**
* 执行一条sql语句
*/
function query($sql){
return self::$_mysqli->query($sql);
}
/**
*
* @param unknown $sql
* @return unknown
*/
function select($sql){
self::$_stmt = $this->query($sql);
if (self::$_stmt && self::$_stmt->num_rows>0) {
while (@$row = self::$_stmt->fetch_assoc()){
$res[] = $row;
}
}
self::$_stmt->free();
return $res;
}
function get($table, $field, $where){
$sql = "select ".$field." from ".$table." where ".$where;
return $this->select($sql);
}
function getRow($table, $field, $where){
$sql = "select ".$field." from ".$table." where ".$where;
$result = $this->select($sql);
return $result[0];
}
/**
* 进行多条sql查询
* @param unknown $query
* @return mixed
*/
function multi_query($query){
if (self::$_mysqli->multi_query($query)){
do {
if (self::$_stmt = self::$_mysqli->store_result()) {
while (@$row = self::$_stmt->fetch_row()) {
$res[] = $row;
}
self::$_stmt->free();
}
}while (self::$_mysqli->next_result());
}
return $res;
}
/**
* 向一张表插入单条记录
* @param 即将执行插入操作的表 $table
* @param 插入字段名和字段值的键值对 $args
* @param 如果设置,sql语句
* @return 插入结果
*/
function add($table, $types, $args, $flag=false){
if (self::$_stmt) {
$this->emptystmt();
}
$fields = "";
$values = "";
$bind = 'self::$_stmt->bind_param('.$types;
foreach ($args as $k=>$v){
$fields .= $k.", ";
$values .= "?,";
$bind .= ' , $'.$k;
$$k = $v;
}
$bind .= ');';
$fields = substr($fields, 0, -2);
$values = substr($values, 0, -1);
$sql = "insert into ".$table." (".$fields.") values (".$values.")";
self::$_stmt = self::$_mysqli->prepare($sql);
echo $cId;
self::$_stmt->bind_param(iis , $cId , $pId , $createDate);
//eval($bind);
$res = self::$_stmt->execute();
if ($flag) {
$this->emptystmt();
}
return $res;
}
/**
* 向一张表删除符合条件的记录
* @param 执行删除操作的表名 $table
* @param 符合要求的条件 $where
* @return 删除结果
*/
function del($table, $where, $flag = false){
if (self::$_stmt) {
$this->emptystmt();
}
$sql = "delete from ".$table." where ".$where;
self::$_stmt = self::$_mysqli->prepare($sql);
$res = self::$_stmt->execute();
if ($flag) {
$this->emptystmt();
}
return $res;
}
/**
* 向一张表进行更新操作
* @param 执行更新操作的表名 $table
* @param 插入字段名和字段值的键值对 $args
* @param 符合要求的条件 $where
* @return 更新结果
*/
function update($table, $types, $args, $where, $flag = false){
if (self::$_stmt) {
$this->emptystmt();
}
$fields = "";
$values = "";
$bind = 'self::$_stmt->bind_param(\''.$types.'\'';
foreach ($args as $k=>$v){
$fields .= $k."=?, ";
$bind .= ' , $'.$k;
$$k = $v;
}
$bind .= ');';
$fields = substr($fields, 0, -2);
$values = substr($values, 0, -1);
$sql = "update ".$table." set ".$fields." where ".$where;
self::$_stmt = self::$_mysqli->prepare($sql);
if (eval($bind)){
$res = self::$_stmt->execute();
}
if ($flag) {
$this->emptystmt();
}
return $res;
}
function bind($types, $args, $flag = false){
if (self::$_stmt) {
$bind = 'self::$_stmt->bind_param('.$types;
foreach ($args as $k => $v){
$bind .= ' , $'.$k;
$$k = $v;
}
$bind .= ');';
if (eval($bind)){
$res = self::$_stmt->execute();
}
if ($flag) {
$this->emptystmt();
}
return $res;
}
return false;
}
/**
* 关闭与准备语句
*/
function emptystmt(){
self::$_stmt->close();
}
/**
* 析构函数
*/
function __destruct(){
self::$_mysqli->close();
}
}
4. [代码]api/Example.php 跳至 [1] [2] [3] [4] [全屏预览]
<?php
$function['Example'] = array('param0' => 'string', 'param1' => 'int');
function Example($param0, $param1){
global $db;
$info = array ($param0, $param1);
return json_encode($info);
}
- 上一篇:PHP图片裁剪、缩放
- 下一篇:通过ip地址查询物理地址显示谷歌地图
精彩图集
精彩文章






