-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathinstall_functions.php
146 lines (137 loc) · 4.11 KB
/
install_functions.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
<?php
//表单提交后...
$posts = $_POST;
//清除一些空白符号
foreach ($posts as $key => $value) {
$posts[$key] = trim($value);
}
if(isset($_POST['install'])){
$mysql_server_name=mysql_real_escape_string($posts['hostname']);
$mysql_username=mysql_real_escape_string($posts['db_username']);
$mysql_password=mysql_real_escape_string($posts['db_password']);
$mysql_dbname=mysql_real_escape_string($posts['db_name']);
$conn=mysql_connect($mysql_server_name,$mysql_username,$mysql_password) or die(mysql_error());
if (mysqli_connect_errno($conn))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
break;
}
else{
//写配置文件
write_config($mysql_server_name, $mysql_username, $mysql_password, $mysql_dbname);
}
//创建数据库 连接数据库
$db_selected = mysql_select_db($mysql_dbname);
if(!$db_selected) {
$sql="CREATE DATABASE IF NOT EXISTS `$mysql_dbname` CHARACTER SET utf8 COLLATE utf8_unicode_ci";
$result=mysql_query($sql);
if(!$result){
die('Cannot create database: ' . mysql_error());
break;
}
else{
$db_selected = mysql_select_db($mysql_dbname, $conn);
if(!$db_selected){
die('Cannot create database: ' . mysql_error());
break;
}
}
}
//执行数据库初始化
if(file_exists('./database.sql')){
run_sql_file('./database.sql');
}
else{
echo "Cannot locate install/database.sql. Please check the integrity of the install folder.";
break;
}
$admin_username = mysql_real_escape_string($posts['admin_username']);
$admin_passwd = mysql_real_escape_string($posts['admin_passwd']);
$admin_email = mysql_real_escape_string($posts['email']);
//添加管理员
$sql="INSERT INTO `$mysql_dbname`.`admin` (`id` ,`username` ,`password` ,`email` ,`admin_level`)
VALUES (NULL , '$admin_username',
password('$admin_passwd'), '$admin_email', '3')";
$result=mysql_query($sql);
if(!$result){
echo("Failed to add admin user!".mysql_errno());
break;
}
else{
echo("Successfully added admin user!\n
Username:".mysql_real_escape_string($posts['admin_username'])."\n
Password:".mysql_real_escape_string($posts['admin_passwd'])."\n
Email:".mysql_real_escape_string($posts['email']));
}
write_lock();
break;
}
/**
* 将配置文件写到data文件夹
* @param string $mysql_server_name 服务器名称
* @param string $mysql_username 数据库用户名
* @param string $mysql_password 数据库密码
* @param string $mysql_dbname 数据库名
*/
function write_config($mysql_server_name,$mysql_username,$mysql_password,$mysql_dbname){
$configFile = "./data/config.inc.php";
$fh = fopen($configFile, 'w') or die();
$stringData = "<?php\n
// database host\n
".'$db_host'." ='$mysql_server_name';\n
// database username\n
".'$db_user'." = '$mysql_username';\n
// database password\n
".'$db_pass'." = '$mysql_password';\n
// database name\n
".'$db_name'." = '$mysql_dbname';\n
?>";
fwrite($fh, $stringData);
fclose($fh);
}
function write_lock(){
$lockFile = "./data/install.lock";
$fh = fopen($lockFile, 'w') or die();
$stringData = " ";
fwrite($fh, $stringData);
fclose($fh);
}
function run_sql_file($file){
//load file
$commands = file_get_contents($file);
//echo "\n".$commands."\n";
//delete comments
$lines = explode("\n",$commands);
$commands = '';
foreach($lines as $line){
//echo "\n".$line."\n";
$line = trim($line);
if( $line && !startsWith($line,'/*') ){
$commands .= $line . "\n";
}
}
//convert to array
$commands = explode(";", $commands);
//run commands
$total = $success = 0;
echo("<div>");
foreach($commands as $command){
echo "<br>";
if(trim($command)){
$success += (@mysql_query($command)==false ? 0 : 1);
$total += 1;
echo("<br>".$command."<br>");
}
}
echo("</div>");
//return number of successful queries and total number of queries found
return array(
"success" => $success,
"total" => $total
);
}
function startsWith($haystack, $needle){
$length = strlen($needle);
return (substr($haystack, 0, $length) === $needle);
}
?>