整合到thinkphp中
最后更新时间:2018年11月17日09:57:23
THinkphp做为国内知名的PHP开发框架,使用者众多。今天我们来讲一下,我们的云授权系统如何整合到Thinkphp开发的系统中。(以Thinkphp3.2.3为例)
一、先自定义一个变量。
找到TP框架下的程序目录下的common文件下的conf文件中的config.php。代码如下:
<?php
return array(
'DB_TYPE' => 'mysql' , // 数据库类型
'DB_HOST' => 'localhost', // 服务器地址
'DB_NAME' => 'test', // 数据库名
'DB_USER' => 'root', // 账号
'DB_PWD' => 'password', // 密码
'DB_PORT' => 3306, // 端口
'DB_PREFIX' => 'think_', // 数据库表前缀
'DB_CHARSET' => 'UTF8', // 数据库字符集
'SYS_KEY' => '在这里填写授权ID号', // 授权ID号
)
?>
将授权ID放在跟数据库配置一起,这是因为,一般情况下,程序的数据库配置页是开放给用户的,或者在执行安装的时候让用户填写后写入到这里的。
如果你是开放数据库配置文件,那么用户就可以将授权ID号手工填写到这里,如果你是执行安装写入的,可以在安装的时候,增加一个授码ID表单项,让用户来填写授权ID。
二、增加授权代码
上面我们增加了 SYS_KEY 这个系统全局配置项。我们可以在控制器中读取到这个配置项,现在,我们来将授权代码加入到控制器中,以便对控制器方法进行授权。
如果你是需要单个控制器方法授权,那么将代码增加到相应的控制器方法中即可,如果你要实现整站授权,可以将代码增加到公共的控制器的构造函数(方法)中,以便自动统一调用授权。
public function __construct()
{
//此处省略你的程序其它代码
//
echo "<script src='http://user.ew80.net/rz.asp?sqid=".C('SYS_KEY')."'></script>";
}
以上授权只是最简易的授权,如果需要整合高级授权,则用下面的代码。
public function __construct()
{
//此处省略你的程序其它代码
//
$squrl = "http://user.ew80.net/key/U6xf6p12xlN.txt";
//远程读取授权中心随机安全验证文件。
//该文件为授权系统在安全配置时自动随机生成,位于授权平台的KEY文件下,请不要删除,以确保能远程读取到。
$ch = curl_init();
$timeout = 10;
curl_setopt ($ch, CURLOPT_URL, $squrl);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$contents = curl_exec($ch);
if (preg_match("/404/", $contents)){
//如果没有远程读取到授权中心随机安全验证文件。
echo "<script language='javascript'>window.alert('授权失败!无法连接到授权服务器!')</script>";
exit;
}else{
'如果授权中心远程连接成功,则开始执行授权JS代码
echo "<script src='http://user.ew80.net/rz.asp?sqid=".C('SYS_KEY')."'></script>";
}
}
以上方法是放在构造函数(方法)中使用,以便全局调用的。如果你不要全局调用,只要把授权代码放在需要授权的方法中即可。比如以下代码(实例以test方法为例)