这几天工作需要.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. C++ builder 2010 操作Excel表格的编程实现

    //--------------------------------------------------------------------------- #include <vcl.h> ...

  2. IEF could not decode Chinese character in IE history well

    My friend is working on some case, and she looks not in the mood. I ask her what's going on. She wan ...

  3. Sunglasses

    It's hot this summer. It also reminds me of one case about sunglasses. She was new to this company a ...

  4. WPF拖动DataGrid中的数据到ListBox

    1.效果图: 2.XAML <Window x:Class="WpfApplication2.MainWindow" xmlns="http://schemas.m ...

  5. boa服务器安装

    boa是一个轻量级的web服务器,单进程单任务模式,支持CGI,是嵌入式行业应用较广的一个轻量级服务器系统. 这是我准备往嵌入式开发板里移植的时候在ubuntu上做的实验.多少有点参考价值. 现在简要 ...

  6. vim插件之SnipMate

    SnipMate简介 snipMate一款功能强大的代码补齐插件,可自定义代码模板,并具备单词补齐的功能. vim插件snipMate下载地址 SnipMate安装 将snipMate.zip解压到~ ...

  7. IOS多线程(一)

    一.绪论 1.进程:平时看到的一个应用程序,即可算作一个线程. 每个进程都有一个PID作为进程ID,有一个Process Name作为进程名字等. 2.线程:一个进程可以有多个线程,而每个线程只可属于 ...

  8. XP极限编程

    13个核心实战  团队协作(Whole Team)  规划策略(The Planning Game) 软件发布计划(ReleasePlanning) 周期开发计划(IterationPlanning) ...

  9. Linux文件系统的主要目录结构说明及分区方案

    Linux操作系统有一些固定的目录.各种Linux发行版的目录结构虽然不会一模一样,但是不会有很大差异.知道了这些目录的作用,不仅对你进行磁盘分区规划很有帮助,而且会让你以后的日常维护工作变得轻松.只 ...

  10. Yii 增删改查 测试记录

    亲们, 我是yii小白 不要笑话我奥.今天白天写一个管理模块涉及到 yii ar 下的  curd 操作,做 update 操作时纠结了好久,今天晚上花点时间学习, 下面写下我的测试记录 代码如下: ...