这几天工作需要.net站点免登陆访问PHP的Wiki站点。

PHP不熟,感觉很苦逼。任务下来了,必须搞定。准备用SSO,太麻烦了,要改写别人很多代码,这个是第三方CMS,封装的很厉害,不好改。最后我的解决方案是,采取我有把握的解决方案:

1) .net系统中用户,添加一个角色, WikiAdmin, 授权EPRG系统的外链。有这个角色的用户才能在ePRG系统上看到Wiki的链接。

2) 用户&角色名数据从Wellmed同步到Wiki数据库。[Wiki中需要提供添加用户的接口,手动写web service,.NET通过HTTP Web方式调用Web Service]

3)点击Wiki链接的时候,跳转到.net的页面eTools/Wiki,Controller的代码中去调用Wiki的service, 添加用户到Wiki系统,完成候reuturn view,在view中自动发post请求到wiki登录页面,登录之后,和之前一样,跳转到首页,整个过程用户看不到。

在配置PHP Service时候,花了很多时间。按照网上方法,做这个测试之前,要确认你的php配置文件中已经将soap扩展打开,即extension=php_soap.dll;发现php_soap.dll项目中都没有。要去下载一个可用的,问朋友说,要下载和当前php版本相同的,否则可能不能用。liense中是3.1,可是php官方都没有这个版本,怀疑liense中不代表php版本。最后通过搜索引擎知道Phpinfo();方法可用打印出PHP的环境变量信息,得知我的版本是是5.4.25。

在php.net官方下载php,复制php_soap.dll到\php\ext\文件夹。

修改\php\php.ini添加一行代码,extension=php_soap.dll,支持soap扩展。

写server.php的服务端代码,client端测试调用。成功。

尝试用.net调用。发现php自己调用自己不需要wsdl文件,.net调用必须有wsdl文件。想办法生成wsdl文件。

最后花了很久,用zend studio,参考网上wsdl格式,终于完成了。

发现.net中添加引用方式,也能成功调用。

然后完善具体的UserManager方法。数据保存在.php的源文件中。最后通过以下方法实现。

<?php
class test {
public function __construct()
{
}
public function updateUser($userName,$pwd,$fullName,$email,$groups)
{
$file = 'conf/users.auth.php';
$content = file_get_contents($file);
$array = explode("\n", $content);
$newUserInfo=$userName.':'.md5($pwd).':'.$fullName.':'.$email.':'.$groups;
$myfile = fopen("conf/users.auth.php", "w") or die("Unable to open file!");
$isUserExists=false; for($i=0; $i<count($array); $i++)
{
if(strlen($array[$i])>5)
{
//foreach each user info
$arrUserInfo = explode(":", $array[$i]);
//user exists, update user;
$rs=strcasecmp($arrUserInfo[0],$userName);
if($rs==0)
{
$isUserExists=true;
$content=str_replace($array[$i],$newUserInfo,$content);
break;
}
}
}
//not exists, add user, append to last.
if($isUserExists==false)
{
$content=$content."\n".$newUserInfo;
}
fwrite($myfile, $content);
fclose($myfile);
return "success";
}
public function getlist($type)
{
$result = array(
array('name'=>'Zhangsan','age'=>18),
array('name'=>'Lisi','age'=>20)
);
$result = json_encode($result);
return $result;
}
} ?>

还需要添加安全认证。

参考资料:http://www.cnblogs.com/mbailing/p/3998821.html

http://www.cnblogs.com/zzxbest/archive/2011/09/21/2184252.html

PHP笔记-PHP中Web Service.的更多相关文章

  1. ODI中web service介绍

    ODI WS架构

  2. android菜鸟学习笔记28----Android中的Service生命周期及本地和远程服务绑定的实现

    Service是Android中长期在后台运行的没有界面的组件,使用服务的优势在于:能够提高进程的优先级,系统不容易回收掉进程,即便回收了,内存充足的时候,会把进程重新创建. 1.服务的简单使用示例: ...

  3. .NET基础拾遗(7)Web Service的开发与应用基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开发基 ...

  4. ASP.NET Web Service如何工作(1)

    ASP.NET Web Service如何工作(1) [日期:2003-06-26] 来源:CSDN  作者:sunnyzhao(翻译) [字体:大 中 小] Summary ASP.NET Web ...

  5. ref:Web Service 渗透测试从入门到精通

    ref:https://www.anquanke.com/post/id/85910 Web Service 渗透测试从入门到精通 发布时间:2017-04-18 14:26:54 译文声明:本文是翻 ...

  6. [转载] 学会使用Web Service上(服务器端访问)~~~

    http://www.360doc.com/content/10/0712/12/541242_38461863.shtml# 关于什么是Web Service,相信在很多地方都会有介绍.简单的讲,W ...

  7. Dynamic CRM 2013学习笔记(二十五)JS调用web service 实现多条记录复制(克隆)功能

    前面介绍过如何克隆一条当前的记录: Dynamic CRM 2013学习笔记(十四)复制/克隆记录 , 主要是通过界面上加一个字段,单击form上的clone 按钮时,改变这个字段的值以触发插件来实现 ...

  8. Web Service学习笔记(webservice、soap、wsdl、jws详细分析)

    Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...

  9. Web Service学习笔记

    Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...

随机推荐

  1. CSS现代字体栈

    CSS字体栈是一系列的字体,它包含了能在不同操作系统和平台上战士的字体,以尽可能的使排版保持一致性.浏览器会在font-family规定的所有字体中从前往后一次查找,如果找不到当前字体就查找下一个字体 ...

  2. word-wrap:break-word和word-break:break-all的小小比较

    个人感觉word-break:break-all;的用法比word-wrap:break-word;要好点, 当然这是出于某些需求而言,下面简单说下word-break:break-all的优点 wo ...

  3. windows svn

    1.1Svn和VisualSvn介绍 VisualSvn Server2.5.6(版本控制服务器)免费开源软件 是基于Windows平台上的Subversion服务器,它是免费的 官方下载: http ...

  4. WP_图片管理机制/异步读取网络图片

    项目有这样的需求, 要求窗口加载一揽子图片,为了不让UI阻塞太久,采用异步读取后绑定显示的方案. 图片的下载应该采用并发的过程(等待网络响应会很耗时,一张一张的下载,等待时间太长) 图片的下载不能占用 ...

  5. WP8_读写XML

    /// <summary> /// WP手机,XML读写类 /// </summary> public class WPXmlRW { /// <summary> ...

  6. XSS CSRF 攻击

    XSS:跨站脚本(Cross-site scripting) CSRF:跨站请求伪造(Cross-site request forgery)定义: 跨网站脚本(Cross-site scripting ...

  7. grunt 快速入门

    Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本号的 No ...

  8. [原]打造Python开发环境之Python环境

    人生苦短,我用Python 一.升级到python2.7 开发环境的系统是centos 6.0, 默认的python版本是2.6.6, 由于线上环境是python2.7,为了防止版本差异产生的问题,所 ...

  9. hbase与Hadoop

    Hbase是一种低延迟的在线系统,Hadoop是优化吞吐量的离线系统.这种互补关系造就了一种强大的.灵活的数据平台,可以用来搭建水平扩展的数据应用.

  10. 【php学习之路】字符串操作

           无论学习那种语言,字符串操作都是必备的基础.学php的时候总是会不知不觉的与C#比较,用起来总觉得怪怪的没有那么顺手,有些命名也差别很大,再加上很多函数命名是简写形式不百度下还真不知道什 ...