微信实验十、ThinkPHP5.0引导自动创建MYSQL数据库及源码下载

(>>>>在公众号中输入文章最后彩蛋即可获取源代码)

开源项目:https://github.com/chenxhjeo,个人博客:http://blog.csdn.net/u013487761

技术QQ群名称:豆豆咨询,群号:625686304

微信公众号名称:豆豆咨询,微信公众号:douAsk

初建日期:2017.04.19

一、实验目的 

1、掌握ThinkPHP5.0引导自动创建MYSQL数据库。

二、实验内容

1、建立不同的ThinkPHP5.0不同页面,包括使用协议、环境监测、创建数据库等,设定创建MYSQL数据库的基本信息。

2、引导自动创建MYSQL数据库。

三、实验步骤及过程 

微信后台需要与数据库交互,那么首先需要建立数据库,本次实验我们通过ThinkPHP5.0来创建数据库,省去了直接对MYSQL管理的步骤。我们借鉴并移植白俊遥的开源项目thinkphp-bjyadmin(基于ThinkPHP3.0的博客系统),书写了基于ThinkPHP5.0的版本。

1、创建博客数据库的界面

我们下载开源项目文件,并修改了入口文件为admin.php,系统访问http://127.0.0.1/ThinkPHP/admin.php,系统将显示博客安装向导,包括1)使用协议;2)环境监测;3)创建数据;4)安装完成。图示如下所示。


2、关键代码解析

admin.php为入口文件,即通过http://127.0.0.1/ThinkPHP/admin.php访问网站。

1)admin.php文件

在admin.php文件中,主要完成数据库是否安装,这是通过检测/public/install/install.lock文件是否存在,如果存在,则说明已经安装成功,否则将进入引导安装页面,进入public/install/index.php文件,admin.php具体核心代码如下所示。

// 检测是否是新安装
if(file_exists("./Public/install") && !file_exists("./Public/install/install.lock")){
       // 组装安装url
 $url=$_SERVER['HTTP_HOST'].trim($_SERVER['SCRIPT_NAME'],'admin.php').'public/install/index.php';
       header("Location:http://$url");
       die;
}

2)public/install/index.php文件

该文件检测当前目录下是否有install.lock文件,如果没有这个文件,则进入安装引导页面;否则,提示已经安装过数据库,如果要重新安装,则需要删除/public/install/install.lock文件。

在后续的同意协议页面、监测环境页面、创建数据库页面,是通过$_GET()方法得到信息,然后进入相关的页面,即agreement.html、test.html、create.html和success.html文件。在create.html页面中,设置DB_HOST、DB_PORT、DB_USER和DB_PWD,通过post方法向public/install/index.php发送信息。public/install/index.php文件如下所示。

<?php
/**
 * 安装向导
 */
header('Content-type:text/html;charset=utf-8');
// 检测是否安装过
if (file_exists('./install.lock')) {
    echo '你已经安装过该系统,重新安装需要先删除./Public/install/install.lock 文件';
    die;
}
// 同意协议页面
if(@!isset($_GET['c']) || @$_GET['c']=='agreement'){
    require './agreement.html';
}
// 检测环境页面
if(@$_GET['c']=='test'){
    require './test.html';
}
// 创建数据库页面
if(@$_GET['c']=='create'){
    require './create.html';
}
// 安装成功页面
if(@$_GET['c']=='success'){
    // 判断是否为post
    if($_SERVER['REQUEST_METHOD']=='POST'){
        $data=$_POST;
        // 连接数据库
        $link=@new mysqli("{$data['DB_HOST']}:{$data['DB_PORT']}",$data['DB_USER'],$data['DB_PWD']);
        // 获取错误信息
        $error=$link->connect_error;
        if (!is_null($error)) {
            // 转义防止和alert中的引号冲突
            $error=addslashes($error);
            die("<script>alert('数据库链接失败:$error');history.go(-1)</script>");
        }
        // 设置字符集
        $link->query("SET NAMES 'utf8'");
        $link->server_info>5.0 or die("<script>alert('请将您的mysql升级到5.0以上');history.go(-1)</script>");
        // 创建数据库并选中
        if(!$link->select_db($data['DB_NAME'])){
            $create_sql='CREATE DATABASE IF NOT EXISTS '.$data['DB_NAME'].' DEFAULT CHARACTER SET utf8;';
            $link->query($create_sql) or die('创建数据库失败');
            $link->select_db($data['DB_NAME']);
        }
        // 导入sql数据并创建表
        $bjyblog_str=file_get_contents('./bjyblog.sql');
        $sql_array=preg_split("/;[\r\n]+/", str_replace('bjy_',$data['DB_PREFIX'],$bjyblog_str));
        foreach ($sql_array as $k => $v) {
            if (!empty($v)) {
                $link->query($v);
            }
        }
        $link->close();
        $db_str=<<<php
<?php
return array(
 
//*************************************数据库设置*************************************
    'DB_TYPE'               =>  'mysqli',                 // 数据库类型
    'DB_HOST'               =>  '{$data['DB_HOST']}',     // 服务器地址
    'DB_NAME'               =>  '{$data['DB_NAME']}',     // 数据库名
    'DB_USER'               =>  '{$data['DB_USER']}',     // 用户名
    'DB_PWD'                =>  '{$data['DB_PWD']}',      // 密码
    'DB_PORT'               =>  '{$data['DB_PORT']}',     // 端口
    'DB_PREFIX'             =>  '{$data['DB_PREFIX']}',   // 数据库表前缀
);
php;
        // 创建数据库链接配置文件
        file_put_contents('../../Application/Common/Conf/db.php', $db_str);
        @touch('./install.lock');
        require './success.html';
    }
 
}

四、技术服务

1 、如果有疑问或者需要帮助,请加入QQ群(群名称:豆豆咨询,群号:625686304);或者公众号douAsk,公众号名称为“豆豆咨询”。 扫描以下二维码,关注“豆豆咨询”

技术QQ群名称:豆豆咨询,群号:625686304

微信公众号名称:豆豆咨询,微信公众号:douAsk

彩蛋号:1207


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlchenxh

机会是创造出来的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值