整合到thinkphp中

最后更新时间:2018年11月17日09:57:23

THinkphp做为国内知名的PHP开发框架,使用者众多。今天我们来讲一下,我们的云授权系统如何整合到Thinkphp开发的系统中。(以Thinkphp3.2.3为例)


一、先自定义一个变量。

找到TP框架下的程序目录下的common文件下的conf文件中的config.php。代码如下:

  1. <?php

  2. return array(

  3. 'DB_TYPE'        =>    'mysql'    ,                            // 数据库类型

  4. 'DB_HOST'        => 'localhost',                    // 服务器地址

  5. 'DB_NAME'        => 'test',                    // 数据库名

  6. 'DB_USER'        => 'root',                    // 账号

  7. 'DB_PWD'        => 'password',                    // 密码

  8. 'DB_PORT'        =>    3306,                                // 端口

  9. 'DB_PREFIX'        => 'think_',                    // 数据库表前缀

  10. 'DB_CHARSET'    => 'UTF8',                // 数据库字符集    

  11. 'SYS_KEY'    => '在这里填写授权ID号',                // 授权ID号

  12. )    

  13. ?>

将授权ID放在跟数据库配置一起,这是因为,一般情况下,程序的数据库配置页是开放给用户的,或者在执行安装的时候让用户填写后写入到这里的。
如果你是开放数据库配置文件,那么用户就可以将授权ID号手工填写到这里,如果你是执行安装写入的,可以在安装的时候,增加一个授码ID表单项,让用户来填写授权ID。

二、增加授权代码

上面我们增加了 SYS_KEY 这个系统全局配置项。我们可以在控制器中读取到这个配置项,现在,我们来将授权代码加入到控制器中,以便对控制器方法进行授权。
如果你是需要单个控制器方法授权,那么将代码增加到相应的控制器方法中即可,如果你要实现整站授权,可以将代码增加到公共的控制器的构造函数(方法)中,以便自动统一调用授权。



  1. public function __construct()

  2.    {

  3.    //此处省略你的程序其它代码

  4.    //

  5.    echo "<script src='http://user.ew80.net/rz.asp?sqid=".C('SYS_KEY')."'></script>";

  6.    



以上授权只是最简易的授权,如果需要整合高级授权,则用下面的代码。


  1. public function __construct()

  2.    {

  3.    //此处省略你的程序其它代码

  4.    //

  5.    $squrl = "http://user.ew80.net/key/U6xf6p12xlN.txt";

  6.    //远程读取授权中心随机安全验证文件。

  7.    //该文件为授权系统在安全配置时自动随机生成,位于授权平台的KEY文件下,请不要删除,以确保能远程读取到。

  8.    $ch = curl_init();

  9.    $timeout = 10;

  10.    curl_setopt ($ch, CURLOPT_URL, $squrl);

  11.    curl_setopt($ch, CURLOPT_HEADER, 1);

  12.    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

  13.    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

  14.    $contents = curl_exec($ch);

  15.     if (preg_match("/404/", $contents)){

  16.    //如果没有远程读取到授权中心随机安全验证文件。

  17.    echo "<script language='javascript'>window.alert('授权失败!无法连接到授权服务器!')</script>";

  18.    exit;

  19.    }else{

  20.    '如果授权中心远程连接成功,则开始执行授权JS代码

  21.        echo "<script src='http://user.ew80.net/rz.asp?sqid=".C('SYS_KEY')."'></script>";

  22.    }

  23.    


以上方法是放在构造函数(方法)中使用,以便全局调用的。如果你不要全局调用,只要把授权代码放在需要授权的方法中即可。比如以下代码(实例以test方法为例)