整合实例PHP实例篇

最后更新时间:2018年12月28日12:23:42

现在我们以PHP语言为例,来做一个授权验证实例。通过该实例,让您可以熟悉授权过程和原理。


<?php
//第一步
//我们先定义一个变量,用来存放授权码。这里为了演示,我们直接将这个变量放在同一页。
//实际应用中,可以将该变量放在数据库配置页或其实公共页,以便全局调用读取。
$AUTH_KEY="A1Zufq2P5KGzLCQAZ4";
//第二步
//我们封装一个GET请求函数,以便我们读取API接口。这里使用PHP的CURL功能。
//封装的函数名为httpGet(),括号里面传入我们授权服务器的API接口地址
function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($curl, CURLOPT_URL, $url);
    $res = curl_exec($curl);
    curl_close($curl);
    return $res;
  }
  
  
  //第三步
  //通过httpGet()函数,来进行GET请求API接口,以便获取授权数据。
  //此处API请求接口地址为我们的演示,实际操作请替换成您安装易运维的网址
  //API接口最后的=号后面是前面我们定义的授权码变量。
  
  $url="http://demo.ew80yun.com/index.php/Api/auth/index.html?authid=".$AUTH_KEY;
  
  $authdata=httpGet($url);//将httpGet函数请求返回的数据赋值给$authdata变量
  
  $authdata=json_decode($authdata,true);//将$authdata中的JSON数据转换成PHP的数组
  /*通过以上操作,我们就得到了一个名为$authdata的数组
  数组中的参数上节课我们已经有列出。
  下面我们就来通过PHP逻辑,判断授权。
  */
  
  
  //第四步 
  //判断并验证授权
  
  //下面是做了一个授权码是否正确的判断。如果不正确,则输出相关提示,并终止程序运行。
  
  if($authdata['authid']!=$AUTH_KEY){echo '您的授权码错误!';exit;}
  
  
  
   //下面我们再来验证一下授权域名是否正确
   //通过$_SERVER[SERVER_NAME]获取当前访问的域名,并与我们返回的授权网址对比。如果不匹配,则输出错误信息,并终止程序运行。
   
   if($authdata['url']!=$_SERVER[SERVER_NAME]){echo '授权域名不正确!';exit;}
   
   
   
   //再来做一个到期时间的判断
   //将到期时间与授权服务器上的当前时间做对比,如果到期时间小于服务器当前时间,授权到期,则输出错误信息,并终止程序运行。
   
   if($authdata['edate']<$authdata['mytime']){echo '授权已到期!';exit;}
   
   //这里我们是将授权到期时间与授权服务器上的时间做对比,而没有跟客户端的时间做对比,目的是防止用户修改客户端的时候,以达到绕过授权。
   
   
   
   //有时候,我们可能会有不同的软件产品,这时,我们就需要对授权所对就的产品做验证,以防止用户一个授权码所有软件均能使用。
   
     if($authdata['cpid']!="产品ID号"){echo '对不起,授权的产品不匹配!';exit;}
     
   //这里的产品ID,填写易运维后台产品的对应ID号。
   
  
?>


 以上就是PHP授权验证代码。真正的代码其实只有十几行,这样就完成了与易运维系统的自动授权对接。 这里要说明的是,实际应用中,做上整合对接后,请自行请相关代码做编译或加密处理。