mirror of
https://github.com/crmeb/CRMEB.git
synced 2026-10-29 14:01:07 +00:00
【程序目录】优化安装代码
This commit is contained in:
parent
0e3e02cc47
commit
f0db44bc9d
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -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'; ?>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user