'.
'';
die();
}
}
// 安装首页
public function index()
{
return View::fetch('step');
}
// 安装
public function install()
{
if(Request::isAjax()){
$data = Request::param();
//var_dump($data);
if (!preg_match("/^[a-zA-Z]{1}([0-9a-zA-Z]|[._]){4,19}$/", $data['admin_user'])) {
return json(['code'=>-1,'msg'=>"管理用户名:至少包含5个字符,需以字母开头"]);
}
if (!preg_match("/^[\@A-Za-z0-9\!\#\$\%\^\&\*\.\~]{6,22}$/", $data['admin_pass'])) {
return json(['code'=>-1,'msg'=>'登录密码至少包含6个字符。可使用字母,数字和符号']);
}
if ($data['admin_pass'] != $data['admin_pass2']) {
return json(['code'=>-1,'msg'=>'两次输入的密码不一致']);
}
$email = $data['admin_email'];
$user = $data['admin_user'];
$create_time = time();
$salt = substr(md5($create_time),-6);
$pass = md5(substr_replace(md5($data['admin_pass']),$salt,0,6));
$webname = $data['webname'];
$webtitle = $data['webtitle'];
$web = Request::host();
//数据库配置
$dbhost = $data['DB_HOST'];
$dbuser = $data['DB_USER'];
$dbpass = $data['DB_PWD'];
$dbport = $data['DB_PORT'];
$dbname = $data['DB_NAME'];
$prefix = $data['DB_PREFIX'];
if ($data['DB_TYPE'] == 'mysql') {
//创建数据库
try {
$conn = new \PDO("mysql:host=$dbhost", $dbuser, $dbpass);
}
catch(\PDOException $e)
{
return json(['code'=>-1,'msg'=>"数据库信息错误" . $e->getMessage()]);
}
$sql = 'CREATE DATABASE IF NOT EXISTS '.$dbname.' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci';
// 使用 exec() ,没有结果返回
$conn->exec($sql);
//echo $dbname."数据库创建成功
";
$conn = null;
//写入数据表
try {
$db = new \PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
} catch(\PDOException $e) {
return json(['code'=>-1,'msg'=>"数据库连接失败" . $e->getMessage()]);
}
//创建表
$res = create_tables($db, $prefix);
if(!$res){
return json(['code'=>-1,'msg'=>"数据表创建失败"]);
}
//写入初始配置
$table_admin = $data['DB_PREFIX'] . "admin";
$table_user = $data['DB_PREFIX'] . "user";
$table_system = $data['DB_PREFIX'] . "system";
$sql_a = "UPDATE $table_admin SET username='{$user}',email='{$email}',password='{$pass}',status=1,auth_group_id=1,create_time='{$create_time}' WHERE id = 1";
$sql_u = "UPDATE $table_user SET name='{$user}',email='{$email}',password='{$pass}',auth=1,status=1,create_time='{$create_time}' WHERE id = 1";
$sql_s = "UPDATE $table_system SET webname='{$webname}',webtitle='{$webtitle}',domain='{$web}',create_time='{$create_time}' WHERE id = 1";
$res_a = $db->exec($sql_a);
//var_dump($db->errorInfo());
if($res_a == 0){
return json(['code'=>-1,'msg'=>"管理员账号写入失败"]);
}
$res_u = $db->exec($sql_u);
if($res_u == 0){
return json(['code'=>-1,'msg'=>"前台管理员写入失败"]);
}
$res_s = $db->exec($sql_s);
if($res_s == 0){
return json(['code'=>-1,'msg'=>"网站配置写入失败"]);
}
$db = null;
$db_str = << env('database.driver', 'mysql'),
// 自定义时间查询规则
'time_query_rule' => [],
// 自动写入时间戳字段
// true为自动识别类型 false关闭
// 字符串则明确指定时间字段类型 支持 int timestamp datetime date
'auto_timestamp' => true,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 数据库连接配置信息
'connections' => [
'mysql' => [
// 数据库类型
'type' => env('database.type', 'mysql'),
// 服务器地址
'hostname' => env('database.hostname', '{$data['DB_HOST']}'),
// 数据库名
'database' => env('database.database', '{$data['DB_NAME']}'),
// 用户名
'username' => env('database.username', '{$data['DB_USER']}'),
// 密码
'password' => env('database.password', '{$data['DB_PWD']}'),
// 端口
'hostport' => env('database.hostport', '{$data['DB_PORT']}'),
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8mb4',
// 数据库表前缀
'prefix' => env('database.prefix', '{$data['DB_PREFIX']}'),
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 是否严格检查字段是否存在
'fields_strict' => true,
// 是否需要断线重连
'break_reconnect' => false,
// 监听SQL
'trigger_sql' => env('app_debug', true),
// 开启字段缓存
'fields_cache' => false,
// 字段缓存路径
//'schema_cache_path' => app()->getRuntimePath() . 'schema' . DIRECTORY_SEPARATOR,
],
// 更多的数据库配置信息
],
];
EOV;
// 创建数据库链接配置文件
$database = config_path() . 'database.php';
if (file_exists($database) && is_writable($database)) {
$fp = fopen($database,"w");
$resf = fwrite($fp, $db_str);
fclose($fp);
if(!$resf) return json(['code' => -1,'msg'=>'数据库配置文件创建失败!']);
} else {
return json(['code' => -1,'msg'=>'config/database.php 无写入权限']);
}
}
$env = << 0,'msg'=>'安装成功','url'=>(string) url('success/complete')]);
}
return json(['code' => -1,'msg'=>'请求失败']);
}
}