首页 > 代码库 > PHP笔记-PHP中Web Service.

PHP笔记-PHP中Web Service.

这几天工作需要.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的源文件中。最后通过以下方法实现。

技术分享
<?phpclass 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;    }}?>
View Code

 

还需要添加安全认证。

 

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

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

 

PHP笔记-PHP中Web Service.