【程序目录】优化安装代码

This commit is contained in:
sugar1569 2022-04-06 09:46:12 +08:00
parent 0e3e02cc47
commit f0db44bc9d
2 changed files with 162 additions and 91 deletions

View File

@ -203,24 +203,53 @@ switch ($step) {
case '3':
$dbName = strtolower(trim($_POST['dbName']));
$_POST['dbport'] = $_POST['dbport'] ?: '3306';
if ($_GET['testdbpwd']) {
if ($_GET['mysqldbpwd']) {
$dbHost = $_POST['dbHost'];
$conn = @mysqli_connect($dbHost, $_POST['dbUser'], $_POST['dbPwd'], NULL, $_POST['dbport']);
if (mysqli_connect_errno($conn)) {
die(json_encode(0));
// var_dump(mysqli_connect_errno($conn));
if ($error = mysqli_connect_errno($conn)) {
if($error == 2002) {
die(json_encode(2002));//地址或端口错误
} else if($error == 1045) {
die(json_encode(1045));//用户名或密码错误
} else {
die(json_encode(-1));//链接失败
}
} else {
$result = mysqli_query($conn, "SELECT @@global.sql_mode");
$result = $result->fetch_array();
$version = mysqli_get_server_info($conn);
if ($version >= 5.7) {
if (strstr($result[0], 'STRICT_TRANS_TABLES') || strstr($result[0], 'STRICT_ALL_TABLES') || strstr($result[0], 'TRADITIONAL') || strstr($result[0], 'ANSI'))
exit(json_encode(-4));
exit(json_encode(-2));//数据库配置需要修改
}
$result = mysqli_query($conn, "select count(table_name) as c from information_schema.`TABLES` where table_schema='$dbName'");
$result = $result->fetch_array();
if ($result['c'] > 0)
exit(json_encode(-2));
if ($result['c'] > 0) {
mysqli_close($conn);
exit(json_encode(-3));//数据库存在
} else {
if (!mysqli_select_db($conn, $dbName)) {
//创建数据时同时设置编码
if (!mysqli_query($conn, "CREATE DATABASE IF NOT EXISTS `" . $dbName . "` DEFAULT CHARACTER SET utf8;")) {
exit(json_encode(-4));//无权限创建数据库
} else {
mysqli_query($conn, "DROP DATABASE `" . $dbName . "` ;");
mysqli_close($conn);
exit(json_encode(1));//数据库配置成功
}
} else {
mysqli_close($conn);
exit(json_encode(1));//数据库配置成功
}
}
}
}
if ($_GET['redisdbpwd']) {
//redis数据库信息
$rbhost = $_POST['rbhost'] ?? '127.0.0.1';
@ -250,8 +279,6 @@ switch ($step) {
exit(json_encode(-3));
}
}
include_once("./templates/step3.php");
exit();
@ -271,40 +298,35 @@ switch ($step) {
$dbPrefix = empty($_POST['dbprefix']) ? 'eb_' : trim($_POST['dbprefix']);
$username = trim($_POST['manager']);
$password = trim($_POST['manager_pwd']);
$password = trim($_POST['manager_pwd']) ?:'crmeb.com';
$email = trim($_POST['manager_email']);
if (!function_exists('mysqli_connect')) {
$arr['msg'] = "请安装 mysqli 扩展!";
echo json_encode($arr);
exit;
exit(json_encode($arr));
}
$conn = @mysqli_connect($dbHost, $dbUser, $dbPwd, NULL, $_POST['dbport']);
if (mysqli_connect_errno($conn)) {
$arr['msg'] = "连接数据库失败!" . mysqli_connect_error($conn);
echo json_encode($arr);
exit;
exit(json_encode($arr));
}
mysqli_set_charset($conn, "utf8"); //,character_set_client=binary,sql_mode='';
$version = mysqli_get_server_info($conn);
if ($version < 5.1) {
$arr['msg'] = '数据库版本太低! 必须5.1以上';
echo json_encode($arr);
exit;
exit(json_encode($arr));
}
if (!mysqli_select_db($conn, $dbName)) {
//创建数据时同时设置编码
if (!mysqli_query($conn, "CREATE DATABASE IF NOT EXISTS `" . $dbName . "` DEFAULT CHARACTER SET utf8;")) {
$arr['msg'] = '数据库 ' . $dbName . ' 不存在,也没权限创建新的数据库!';
echo json_encode($arr);
exit;
exit(json_encode($arr));
}
if ($n == -1) {
$arr['n'] = 0;
$arr['msg'] = "成功创建数据库:{$dbName}<br>";
echo json_encode($arr);
exit;
exit(json_encode($arr));
}
mysqli_select_db($conn, $dbName);
}
@ -333,8 +355,7 @@ switch ($step) {
}
$i++;
$arr = array('n' => $i, 'msg' => $message);
echo json_encode($arr);
exit;
exit(json_encode($arr));
} else {
if (trim($sql) == '')
continue;
@ -437,13 +458,11 @@ switch ($step) {
if ($res) {
$message = '成功添加管理员<br />成功写入配置文件<br>安装完成.';
$arr = array('n' => 999999, 'msg' => $message);
echo json_encode($arr);
exit;
exit(json_encode($arr));
} else {
$message = '添加管理员失败<br />成功写入配置文件<br>安装完成.';
$arr = array('n' => 999999, 'msg' => $message);
echo json_encode($arr);
exit;
exit(json_encode($arr));
}
}

View File

@ -48,16 +48,14 @@
</tr>
<tr>
<td class="tar">数据库密码:</td>
<td><input type="password" name="dbpw" id="dbpw" value="" class="input" autoComplete="off"
onBlur="TestDbPwd(0)"></td>
<td><input type="password" name="dbpw" id="dbpw" value="" class="input" autoComplete="off" onBlur="mysqlDbPwd(0)"></td>
<td>
<div id="J_install_tip_dbpw"></div>
</td>
</tr>
<tr>
<td class="tar">数据库名:</td>
<td><input type="text" name="dbname" id="dbname" value="crmeb" class="input"
onBlur="TestDbPwd(0)"></td>
<td><input type="text" name="dbname" id="dbname" value="crmeb" class="input" onBlur="mysqlDbPwd(0)"></td>
<td>
<div id="J_install_tip_dbname"></div>
</td>
@ -71,8 +69,7 @@
</tr>
<tr>
<td class="tar">演示数据:</td>
<td colspan="2"><input style="width:18px;height:18px;" type="checkbox" id="demo" name="demo"
value="demo" checked></td>
<td colspan="2"><input style="width:18px;height:18px;" type="checkbox" id="demo" name="demo" value="demo" checked></td>
</tr>
</table>
<table width="100%">
@ -83,34 +80,32 @@
</tr>
<tr>
<td class="tar">服务器地址:</td>
<td><input type="text" name="rbhost" id="rbhost" value="127.0.0.1" class="input"></td>
<td><input type="text" name="rbhost" id="rbhost" value="127.0.0.1" class="input" onBlur="redisDbPwd(0)"></td>
<td>
<div id="J_install_rbhost"><span class="gray">redis服务器地址,一般为127.0.0.1</span></div>
<div id="J_install_redis_host"><span class="gray">redis服务器地址,一般为127.0.0.1</span></div>
</td>
</tr>
<tr>
<td class="tar">端口号:</td>
<td><input type="text" name="rbport" id="rbport" value="6379" class="input" autoComplete="off">
<td><input type="text" name="rbport" id="rbport" value="6379" class="input" autoComplete="off" onBlur="redisDbPwd(0)">
</td>
<td>
<div id="J_install_tip_manager_pwd"><span class="gray">redis端口,默认为6379</span></div>
<div id="J_install_redis_port"><span class="gray">redis端口,默认为6379</span></div>
</td>
</tr>
<tr>
<td class="tar">数据库:</td>
<td><input type="text" name="rbselect" id="rbselect" value="0" class="input" autoComplete="off">
</td>
<td><input type="text" name="rbselect" id="rbselect" value="0" class="input" autoComplete="off" onBlur="redisDbPwd(0)"></td>
<td>
<div id="J_install_tip_manager_ckpwd"><span class="gray">redis数据库,默认为0,一般不做更改</span></div>
<div id="J_install_redis_select"><span class="gray">redis数据库,默认为0,一般不做更改</span></div>
</td>
</tr>
<tr>
<td class="tar">数据库密码:</td>
<td><input type="password" name="rbpw" onBlur="TestDbPwd(0)" id="rbpw" value="" class="input"
autoComplete="off"></td>
<td><input type="text" name="rbpw" id="rbpw" value="" class="input" autoComplete="off" onBlur="redisDbPwd(0)"></td>
<td>
<div id="J_install_tip_dbpw"></div>
<span class="gray">redis数据库密码</span></td>
<div id="J_install_redis_dbpw"><span class="gray">redis数据库密码</span></div>
</td>
</tr>
</table>
@ -122,23 +117,22 @@
</tr>
<tr>
<td class="tar">管理员帐号:</td>
<td><input type="text" name="manager" id="manager" value="admin" class="input"></td>
<td><input type="text" name="manager" id="manager" value="admin" class="input" onblur="checkForm()"></td>
<td>
<div id="J_install_tip_manager"></div>
</td>
</tr>
<tr>
<td class="tar">管理员密码:</td>
<td><input type="password" name="manager_pwd" id="manager_pwd" class="input" autoComplete="off">
<td><input type="password" name="manager_pwd" id="manager_pwd" class="input" autoComplete="off" onblur="checkForm()">
</td>
<td>
<div id="J_install_tip_manager_pwd"></div>
<div id="J_install_tip_manager_pwd"><span class="gray">请输入至少6个字符密码</span></div>
</td>
</tr>
<tr>
<td class="tar">重复密码:</td>
<td><input type="password" name="manager_ckpwd" id="manager_ckpwd" class="input"
autoComplete="off"></td>
<td><input type="password" name="manager_ckpwd" id="manager_ckpwd" class="input" autoComplete="off" onkeyup="checkForm()"></td>
<td>
<div id="J_install_tip_manager_ckpwd"></div>
</td>
@ -148,7 +142,7 @@
<div id="J_response_tips" style="display:none;"></div>
</div>
<div class="bottom tac"><a href="./index.php?step=2" class="btn">上一步</a>
<button type="button" onClick="checkForm();" class="btn btn_submit J_install_btn">创建数据</button>
<button type="button" onClick="submitForm();" class="btn btn_submit J_install_btn">创建数据</button>
</div>
</form>
</section>
@ -157,27 +151,18 @@
<script src="./js/validate.js?v=9.0"></script>
<script src="./js/ajaxForm.js?v=9.0"></script>
<script>
function TestDbPwd(connect_db) {
var dbHost = $('#dbhost').val();
var dbUser = $('#dbuser').val();
var dbPwd = $('#dbpw').val();
var dbName = $('#dbname').val();
var dbport = $('#dbport').val();
var demo = $('#demo').val();
var mysqlstatu = false;
var redisstatu = false;
function mysqlDbPwd(connect_db) {
var data = {
'dbHost': dbHost,
'dbUser': dbUser,
'dbPwd': dbPwd,
'dbName': dbName,
'dbport': dbport,
'demo': demo,
rbhost: $('#rbhost').val(),
rbport: $("#rbport").val(),
rbselect: $("#rbselect").val(),
rbpw: $('#rbpw').val(),
'dbHost': $('#dbhost').val(),
'dbUser': $('#dbuser').val(),
'dbPwd': $('#dbpw').val(),
'dbName': $('#dbname').val(),
'dbport': $('#dbport').val(),
'demo': $('#demo').val()
};
var url = "<?php echo $_SERVER['PHP_SELF']; ?>?step=3&testdbpwd=1";
var url = "<?php echo $_SERVER['PHP_SELF']; ?>?step=3&mysqldbpwd=1";
$.ajax({
type: "POST",
url: url,
@ -187,65 +172,132 @@
},
success: function (msg) {
if (msg == 1) {
if (connect_db == 1) {
$("#J_install_form").submit(); // ajax 验证通过后再提交表单
}
// $('#J_install_tip_dbpw').html('<span generated="true" class="tips_success" style="">密码正确</span>');
$('#J_install_tip_dbpw').html('');
$('#J_install_tip_dbname').html('');
$('#J_install_rbhost').html('');
mysqlstatu = true;
} else if (msg == -1) {
$('#J_install_tip_dbpw').html('');
$('#J_install_tip_dbname').html('');
$('#J_install_rbhost').html('<span for="dbname" generated="true" class="tips_error" style="">Redis扩展没有安装</span>');
// $('#dbpw').val("");
$('#J_install_tip_dbpw').html('<span for="dbname" generated="true" class="tips_error" >数据库链接配置失败</span>');
mysqlstatu = false;
} else if (msg == -2) {
$('#J_install_tip_dbname').html('<span for="dbname" generated="true" class="tips_error" style="">你的不是空数据库, 请更换一个数据库名字</span>');
$('#J_install_tip_dbpw').html('<span for="dbname" generated="true" class="tips_error" >请在mysql配置文件修sql-mode或sql_mode为NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,<a half="https://doc.crmeb.com/web/single/crmeb_v4/936" target="_blank">查看文档</a></span>');
mysqlstatu = false;
} else if (msg == -3) {
$('#J_install_tip_dbpw').html('');
$('#J_install_tip_dbname').html('');
$('#J_install_rbhost').html('<span for="dbname" generated="true" class="tips_error" style="">Redis数据库没有启动或者密码错误</span>');
} else if (msg == -4) {
$('#J_install_tip_dbpw').html('<span for="dbname" generated="true" class="tips_error" style="">请在mysql配置文件修sql-mode或sql_mode为NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION</span>');
$('#J_install_tip_dbname').html('<span for="dbname" generated="true" class="tips_error" >你的不是空数据库, 请更换一个数据库名字</span>');
mysqlstatu = false;
}else if (msg == -4) {
$('#J_install_tip_dbpw').html('');
$('#J_install_tip_dbname').html('<span for="dbname" generated="true" class="tips_error" >无权限创建数据,请先手动创建数据库</span>');
mysqlstatu = false;
} else if (msg == 2002) {
$('#J_install_tip_dbpw').html('<span for="dbname" generated="true" class="tips_error" >地址或端口错误</span>');
mysqlstatu = false;
} else if (msg == 1045) {
$('#J_install_tip_dbpw').html('<span for="dbname" generated="true" class="tips_error" >用户名或密码错误</span>');
mysqlstatu = false;
} else {
$('#dbpw').val("");
$('#J_install_tip_dbpw').html('<span for="dbname" generated="true" class="tips_error" style="">数据库链接配置失败</span>');
$('#J_install_tip_dbpw').html('');
mysqlstatu = false;
}
},
complete: function () {
},
error: function () {
$('#J_install_tip_dbpw').html('<span for="dbname" generated="true" class="tips_error" style="">数据库链接配置失败</span>');
$('#dbpw').val("");
mysqlstatu = false;
}
});
}
function redisDbPwd(connect_db) {
var data = {
rbhost: $('#rbhost').val(),
rbport: $("#rbport").val(),
rbselect: $("#rbselect").val(),
rbpw: $('#rbpw').val(),
};
var url = "<?php echo $_SERVER['PHP_SELF']; ?>?step=3&redisdbpwd=1";
$.ajax({
type: "POST",
url: url,
data: data,
dataType: 'JSON',
beforeSend: function () {
},
success: function (msg) {
if (msg == 1) {
// $('#J_install_redis_host').html('<span generated="true" class="tips_success" style="">地址配置正确</span>');
// $('#J_install_redis_port').html('<span generated="true" class="tips_success" style="">端口配置正确</span>');
// $('#J_install_redis_select').html('<span generated="true" class="tips_success" style="">库可用</span>');
$('#J_install_redis_dbpw').html('<span generated="true" class="tips_success" style="">配置成功</span>');
redisstatu = true;
} else if (msg == -1) {
$('#J_install_redis_host').html('<span for="dbname" generated="true" class="tips_error" style="">Redis扩展没有安装</span>');
redisstatu = false;
} else if (msg == -3) {
$('#J_install_redis_dbpw').html('<span for="dbname" generated="true" class="tips_error" style="">Redis数据库没有启动或者配置信息错误</span>');
redisstatu = false;
} else {
$('#J_install_redis_dbpw').html('<span for="dbname" generated="true" class="tips_error" style="">配置失败</span>');
redisstatu = false;
}
},
complete: function () {
},
error: function () {
$('#J_install_redis_dbpw').html('<span for="dbname" generated="true" class="tips_error" style="">数据库链接配置失败</span>');
$('#dbpw').val("");
redisstatu = false;
}
});
}
function checkForm() {
manager = $.trim($('#manager').val()); //用户名表单
manager_pwd = $.trim($('#manager_pwd').val()); //密码表单
manager_ckpwd = $.trim($('#manager_ckpwd').val()); //密码提示区
if (manager.length == 0) {
alert('管理员账号不能为空');
$('#J_install_tip_manager').html('<span for="dbname" generated="true" class="tips_error" style="">请输入管理账号</span>');
return false;
}
if (!(/^[a-zA-Z]{0,}$/.test(manager))) {
alert('账号必须为英文或者数字');
// alert('账号必须为英文或者数字');
$('#J_install_tip_manager').html('<span generated="true" class="tips_error" style="">账号必须为英文或者数字</span>');
return false;
} else {
$('#J_install_tip_manager').html('<span generated="true" class="tips_success" style="">用户名可用</span>');
}
if (manager_pwd.length < 6) {
alert('管理员密码必须6位数以上');
// alert('管理员密码必须6位数以上');
$('#J_install_tip_manager_pwd').html('<span for="dbname" generated="true" class="tips_error" style="">管理员密码必须5位数以上</span>');
return false;
} else {
$('#J_install_tip_manager_pwd').html('<span generated="true" class="tips_success" style="">密码可用</span>');
}
if (manager_ckpwd != manager_pwd) {
alert('两次密码不一致');
// alert('两次密码不一致');
$('#J_install_tip_manager_ckpwd').html('<span for="dbname" generated="true" class="tips_error" style="">两次密码不一致</span>');
return false;
} else {
$('#J_install_tip_manager_ckpwd').html('<span generated="true" class="tips_success" style="">密码正确</span>');
return true;
}
}
function submitForm() {
if(!mysqlstatu) {
mysqlDbPwd(1);
}
if(!redisstatu) {
redisDbPwd(1);
}
if(checkForm()) {
$("#J_install_form").submit(); // ajax 验证通过后再提交表单
}
TestDbPwd(1);
}
</script>
</div>
<?php require './templates/footer.php'; ?>