此教程为方便把onethink onethink_config配置表中加入的数据写入配置文件,方便在后台添加和管理。

或许此教程多此一举(手动添加配置在配置文件也可以啊)呵呵。

如果此教程对你有帮助,那就够了,用不着请包含。

首先我们有个配置文件,比如站点:第三方登录申请的数据需要写入此文件

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2012 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi.cn@gmail.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
// config.php 2013-02-25
//定义回调URL通用的URL
define('URL_CALLBACK', 'http://'.$_SERVER['HTTP_HOST'].'/index.php/Api/Index/oauth/type/');
return array(
    //腾讯QQ登录配置
    'THINK_SDK_QQ'      => array(
        'APP_KEY'       => '[QQ_APP_ID]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[QQ_APP_KEY]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'qq',
    ),
    //腾讯微博配置
    'THINK_SDK_TENCENT' => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'tencent',
    ),
    //新浪微博配置
    'THINK_SDK_SINA'    => array(
        'APP_KEY'       => '[SINA_API_KEY]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[SINA_SECRET]',//应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'sina',
    ),
    //网易微博配置
    'THINK_SDK_T163'    => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 't163',
    ),
    //人人网配置
    'THINK_SDK_RENREN'  => array(
        'APP_KEY'       => '[RENREN_API_KEY]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[RENREN_SECRET]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'renren',
    ),
    //360配置
    'THINK_SDK_X360'    => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'x360',
    ),
    //豆瓣配置
    'THINK_SDK_DOUBAN'  => array(
        'APP_KEY'       => '[DOUBAN_API_KEY]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[DOUBAN_SECRET]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'douban',
    ),
    //Github配置
    'THINK_SDK_GITHUB'  => array(
        'APP_KEY'       => '[GITHUB_CLIENT_ID]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[GITHUB_CLIENT_SECRET]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'github',
    ),
    //Google配置
    'THINK_SDK_GOOGLE'  => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'google',
    ),
    //MSN配置
    'THINK_SDK_MSN'     => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'msn',
    ),
    //点点配置
    'THINK_SDK_DIANDIAN'=> array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'diandian',
    ),
    //淘宝网配置
    'THINK_SDK_TAOBAO'  => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'taobao',
    ),
    //百度配置
    'THINK_SDK_BAIDU'   => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'baidu',
    ),
    //开心网配置
    'THINK_SDK_KAIXIN'  => array(
        'APP_KEY'       => '[KAIXIN_API_KEY]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[KAIXIN_SECRET]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'kaixin',
    ),
    //搜狐微博配置
    'THINK_SDK_SOHU'    => array(
        'APP_KEY'       => '[SOHU_API_KEY]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[SOHU_SECRET]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'sohu',
    ),
);

现在我们要把上面配置文件中的[XXXXXX],替换成我们想要的配置值。

然而配置值是写入onethink的配置表中的,那问题来了,首先在我们在数据库配置表中保存了配置字段值后,我们用到的时候有不需要去配置表中读取数据。

那我们在修改配置表数据的时候就可以把想要的数据写入我们定义的一个配置文件中,这样在用到thinkphp C方法的时候就可以直接读取自定义生成的配置文件中的数据。、



下面就是onethink保存配置文件控制器中的函数save():

    /**
     * 批量保存配置
     * @author 麦当苗儿 <zuojiazi@vip.qq.com>
     */
    public function save($config){
        if($config && is_array($config)){
            $Config = M('Config');
            foreach ($config as $name => $value) {
                $map = array('name' => $name);
                $Config->where($map)->setField('value', $value);
            }
        }
        S('DB_CONFIG_DATA',null);
        $config = M('config')->field('name,value')->where(array('group'=>6))->select();

        $webconfig = array();
        foreach ($config as $key => $value) {
            $webconfig[$value['name']] .= $value['value'];
        }
        $webconfig = write_config($webconfig);
        $this->success('保存成功!');
    }

上面函数中:

$config = M('config')->field('name,value')->where(array('group'=>6))->select();

获取指定分组的配置值,把键值队对应组合起来,方便后期文件中的值替换,然后生存指定配置文件。

write_config()

调用此方法如下:

/**
 * 写入配置文件
 * @param  array $config 配置信息
 */
function write_config($config){
    if(is_array($config)){
        //读取配置内容
        $conf = file_get_contents('./Application/Common/' . 'Conf/oauth.php');
        //替换配置项
        foreach ($config as $name => $value) {
            $conf = str_replace("[{$name}]", $value, $conf);
        }
        //写入应用配置文件
        if(!IS_WRITE){
            return false;
        }else{
            if(file_put_contents('./Application/' . 'Common/Conf/webconfig.php', $conf)){
                return true;
            } else {
                return false;
            }
            return false;
        }
    }
}

上面的代码就进行读文件,替换文件配置值,然后把数据写入webconfig.php配置文件如下。

<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2012 http://thinkphp.cn All rights reserved.

// +----------------------------------------------------------------------

// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 麦当苗儿 <zuojiazi.cn@gmail.com> <http://www.zjzit.cn>
// +----------------------------------------------------------------------
// config.php 2013-02-25
//定义回调URL通用的URL
define('URL_CALLBACK', 'http://'.$_SERVER['HTTP_HOST'].'/index.php/Api/Index/oauth/type/');
return array(
    //腾讯QQ登录配置
    'THINK_SDK_QQ'      => array(
        'APP_KEY'       => '110***********27', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => 'KMf****************aQkf42', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'qq',
    ),
    //腾讯微博配置
    'THINK_SDK_TENCENT' => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'tencent',
    ),
    //微信配置
    'THINK_SDK_WECHAT' => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'wechat',
    ),
    //新浪微博配置
    'THINK_SDK_SINA'    => array(
        'APP_KEY'       => '2825********51**5', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '2d**7771****33cde6a81faf******f2fs4****d30bffc',//应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'sina',
    ),
    //网易微博配置
    'THINK_SDK_T163'    => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 't163',
    ),
    //人人网配置
    'THINK_SDK_RENREN'  => array(
        'APP_KEY'       => '[RENREN_API_KEY]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[RENREN_SECRET]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'renren',
    ),
    //360配置
    'THINK_SDK_X360'    => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'x360',
    ),
    //豆瓣配置
    'THINK_SDK_DOUBAN'  => array(
        'APP_KEY'       => '[DOUBAN_API_KEY]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[DOUBAN_SECRET]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'douban',
    ),
    //Github配置
    'THINK_SDK_GITHUB'  => array(
        'APP_KEY'       => '[GITHUB_CLIENT_ID]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[GITHUB_CLIENT_SECRET]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'github',
    ),
    //Google配置
    'THINK_SDK_GOOGLE'  => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'google',
    ),
    //MSN配置
    'THINK_SDK_MSN'     => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'msn',
    ),
    //点点配置
    'THINK_SDK_DIANDIAN'=> array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'diandian',
    ),
    //淘宝网配置
    'THINK_SDK_TAOBAO'  => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'taobao',
    ),
    //百度配置
    'THINK_SDK_BAIDU'   => array(
        'APP_KEY'       => '', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'baidu',
    ),
    //开心网配置
    'THINK_SDK_KAIXIN'  => array(
        'APP_KEY'       => '[KAIXIN_API_KEY]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[KAIXIN_SECRET]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'kaixin',
    ),
    //搜狐微博配置
    'THINK_SDK_SOHU'    => array(
        'APP_KEY'       => '[SOHU_API_KEY]', //应用注册成功后分配的 APP ID
        'APP_SECRET'    => '[SOHU_SECRET]', //应用注册成功后分配的KEY
        'CALLBACK'      => URL_CALLBACK . 'sohu',
    ),
);

或许此教程多此一举,那就请路过,只是个人笔记而以。

点赞(1) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部