homedir = $homedir; //获取当前域名 //获取当前端口 $port = $_SERVER["SERVER_PORT"]; //对端口进行判断 switch ( $port ) { case 80: $protocol = "http://"; $port = ''; break; case 443: $protocol = "https://"; $port = ''; break; default: $protocol = "http://"; $port = ":".$port; break; } $uri = $_SERVER["REQUEST_URI"]; $uri = str_replace("check.php","",$uri); //组合为完整的URL $domain = $protocol.$_SERVER['SERVER_NAME'].$port.$uri; $domain = str_replace("install.php?setup=2","",$domain); $this->domain = $domain; } //检查环境是否符合条件 public function check(){ $homedir = $this->homedir; //echo $homedir.'db'; //检查根目录是否可写,结果写入到一个数组 //echo $thedir; $checkarr['home'] = is_writable($homedir); if($checkarr['home']){ $statusarr['home'] = '通过'; } else{ $statusarr['home'] = '目录不可写!'; } $checkarr['db'] = is_writable($homedir.'db'); if($checkarr['db']){ $statusarr['db'] = '通过'; } else{ $statusarr['db'] = '目录不可写!'; } //检测组建是否支持 $ext = get_loaded_extensions(); if(array_search('pdo_sqlite',$ext)){ $statusarr['pdo'] = '支持'; } else{ $statusarr['pdo'] = '不支持!'; } //return $checkarr; return $statusarr; } //获取站点信息 public function info(){ $homedir = $this->homedir; $info = array( "homedir" => $this->homedir, "domain" => $this->domain ); return $info; } //验证函数 protected function verify($data,$type){ switch ($type) { //检查用户名 case 'user': $pattern = '/^[a-zA-Z0-9]+$/'; if($data == ''){ echo '请填写用户名!'; exit; } if(!preg_match($pattern,$data)){ echo '用户名格式有误!'; exit; } break; case 'pass': $pattern = '/^[a-zA-Z0-9!@#$%^&*.]+$/'; if(!preg_match($pattern,$data)){ echo '密码格式有误!'; exit; } break; case 'pass2': $pass1 = $data['pass1']; $pass2 = $data['pass2']; if($pass1 != $pass2){ echo '两次密码不一致!'; exit; } break; case 'domain': $domain = $data['domain']; if(!filter_var($domain, FILTER_VALIDATE_URL)){ echo '域名格式有误!(需要包含https://)'; exit; } break; default: # code... break; } } //安装 public function setup($data){ $homedir = $this->homedir; $dbpath = $this->homedir.'db/'; $user = $data['user']; $pass1 = $data['pass1']; $pass2 = $data['pass2']; $this->verify($user,'user'); $this->verify($pass1,'pass'); $this->verify($data,'pass2'); $this->verify($data,'domain'); //复制一份数据库 copy($dbpath."imgurl-simple.db3",$dbpath."imgurl.db3"); //复制一份配置文件 if(copy($homedir."config-simple.php",$homedir."config.php")){ $configdir = $homedir."config.php"; $myfile = fopen($homedir."config.php", "r") or die("Unable to open file!"); $content = fread($myfile,filesize($configdir)); //执行替换 $content = str_replace("imguser",$user,$content); $content = str_replace("imgpass",$pass2,$content); $content = str_replace("homedir",$data['homedir'],$content); $content = str_replace("https://imgurl.org/",$data['domain'],$content); //var_dump($content); //写入文件 $myfile = fopen($homedir."config.php", "w+") or die("Unable to open file!"); fwrite($myfile, $content); //关闭 fclose($myfile); //更名安装文件 rename($homedir."install.php",$homedir."install.php.bak"); } } } ?>