/** * 连接数据库 * @return bool * @throws Exception */ public function OpenConnect() { if ($this->isconnected) { return false; } if (!$this->option['ZC_DATABASE_TYPE']) { return false; } switch ($this->option['ZC_DATABASE_TYPE']) { case 'sqlite': case 'sqlite3': case 'pdo_sqlite': $this->db = ZBlogPHP::InitializeDB($this->option['ZC_DATABASE_TYPE']); if ($this->db->Open(array($this->usersdir . 'data/' . $this->option['ZC_SQLITE_NAME'], $this->option['ZC_SQLITE_PRE'])) == false) { $this->ShowError(69, __FILE__, __LINE__); } break; case 'pgsql': case 'pdo_pgsql': $this->db = ZBlogPHP::InitializeDB($this->option['ZC_DATABASE_TYPE']); if ($this->db->Open(array($this->option['ZC_PGSQL_SERVER'], $this->option['ZC_PGSQL_USERNAME'], $this->option['ZC_PGSQL_PASSWORD'], $this->option['ZC_PGSQL_NAME'], $this->option['ZC_PGSQL_PRE'], $this->option['ZC_PGSQL_PORT'], $this->option['ZC_PGSQL_PERSISTENT'])) == false) { $this->ShowError(67, __FILE__, __LINE__); } break; case 'mysql': case 'mysqli': case 'pdo_mysql': default: $this->db = ZBlogPHP::InitializeDB($this->option['ZC_DATABASE_TYPE']); if ($this->db->Open(array($this->option['ZC_MYSQL_SERVER'], $this->option['ZC_MYSQL_USERNAME'], $this->option['ZC_MYSQL_PASSWORD'], $this->option['ZC_MYSQL_NAME'], $this->option['ZC_MYSQL_PRE'], $this->option['ZC_MYSQL_PORT'], $this->option['ZC_MYSQL_PERSISTENT'], $this->option['ZC_MYSQL_ENGINE'])) == false) { $this->ShowError(67, __FILE__, __LINE__); } break; } $this->isconnected = true; return true; }
function Setup4() { global $zbp; ?> <dl> <dt></dt> <dd id="ddleft"><div id="headerimg"><img src="../zb_system/image/admin/install.png" alt="Z-BlogPHP" /> <strong><?php echo $zbp->lang['zb_install']['install_program']; ?> </strong></div> <div class="left"><?php echo $zbp->lang['zb_install']['install_progress']; ?> </div> <div id="setup4" class="left"></div> <p><b><?php echo $zbp->lang['zb_install']['install_license']; ?> </b> » <b><?php echo $zbp->lang['zb_install']['environment_check']; ?> </b> » <b><?php echo $zbp->lang['zb_install']['db_build_set']; ?> </b> » <b><?php echo $zbp->lang['zb_install']['install_result']; ?> </b></p> </dd> <dd id="ddright"> <div id="title"><?php echo $zbp->lang['zb_install']['install_result']; ?> </div> <div id="content"> <?php $isInstallFlag = true; $zbp->option['ZC_DATABASE_TYPE'] = GetVars('dbtype', 'POST'); $cts = ''; switch ($zbp->option['ZC_DATABASE_TYPE']) { case 'mysql': case 'mysqli': case 'pdo_mysql': $cts = file_get_contents($GLOBALS['blogpath'] . 'zb_system/defend/createtable/mysql.sql'); if ($zbp->option['ZC_YUN_SITE'] != '') { break; } $zbp->option['ZC_MYSQL_SERVER'] = GetVars('dbmysql_server', 'POST'); if (strpos($zbp->option['ZC_MYSQL_SERVER'], ':') !== false) { $servers = explode(':', $zbp->option['ZC_MYSQL_SERVER']); $zbp->option['ZC_MYSQL_SERVER'] = trim($servers[0]); $zbp->option['ZC_MYSQL_PORT'] = (int) $servers[1]; if ($zbp->option['ZC_MYSQL_PORT'] == 0) { $zbp->option['ZC_MYSQL_PORT'] = 3306; } unset($servers); } $zbp->option['ZC_MYSQL_USERNAME'] = trim(GetVars('dbmysql_username', 'POST')); $zbp->option['ZC_MYSQL_PASSWORD'] = trim(GetVars('dbmysql_password', 'POST')); $zbp->option['ZC_MYSQL_NAME'] = trim(str_replace(array('\'', '"'), array('', ''), GetVars('dbmysql_name', 'POST'))); $zbp->option['ZC_MYSQL_PRE'] = trim(str_replace(array('\'', '"'), array('', ''), GetVars('dbmysql_pre', 'POST'))); if ($zbp->option['ZC_MYSQL_PRE'] == '') { $zbp->option['ZC_MYSQL_PRE'] == 'zbp_'; } $zbp->option['ZC_MYSQL_ENGINE'] = GetVars('dbengine', 'POST'); $cts = str_replace('MyISAM', $zbp->option['ZC_MYSQL_ENGINE'], $cts); $zbp->db = ZBlogPHP::InitializeDB($zbp->option['ZC_DATABASE_TYPE']); if ($zbp->db->CreateDB($zbp->option['ZC_MYSQL_SERVER'], $zbp->option['ZC_MYSQL_PORT'], $zbp->option['ZC_MYSQL_USERNAME'], $zbp->option['ZC_MYSQL_PASSWORD'], $zbp->option['ZC_MYSQL_NAME']) == true) { echo $zbp->lang['zb_install']['create_db'] . $zbp->option['ZC_MYSQL_NAME'] . "<br/>"; } $zbp->db->dbpre = $zbp->option['ZC_MYSQL_PRE']; $zbp->db->Close(); break; case 'sqlite': $cts = file_get_contents($GLOBALS['blogpath'] . 'zb_system/defend/createtable/sqlite.sql'); $cts = str_replace(' autoincrement', '', $cts); $zbp->option['ZC_SQLITE_NAME'] = trim(GetVars('dbsqlite_name', 'POST')); $zbp->option['ZC_SQLITE_PRE'] = trim(GetVars('dbsqlite_pre', 'POST')); break; case 'sqlite3': case 'pdo_sqlite': $cts = file_get_contents($GLOBALS['blogpath'] . 'zb_system/defend/createtable/sqlite.sql'); $zbp->option['ZC_SQLITE_NAME'] = trim(GetVars('dbsqlite_name', 'POST')); $zbp->option['ZC_SQLITE_PRE'] = trim(GetVars('dbsqlite_pre', 'POST')); break; default: $isInstallFlag = false; break; } if ($isInstallFlag) { $zbp->OpenConnect(); $zbp->ConvertTableAndDatainfo(); if (CreateTable($cts)) { InsertInfo(); SaveConfig(); } $zbp->CloseConnect(); } else { echo '<p>还没有选择数据库类型,请后退重试。</p><p><a href="javascript:history.go(-1)">点击这里后退</a></p>'; } ?> </div> <div id="bottom"> <input type="button" name="next" onClick="window.location.href='../'" id="netx" value="<?php echo $zbp->lang['zb_install']['ok']; ?> " /> </div> </dd> </dl> <?php }
/** * 连接数据库 * @return bool * @throws Exception */ public function OpenConnect() { if ($this->isconnected) { return false; } if (!$this->option['ZC_DATABASE_TYPE']) { return false; } switch ($this->option['ZC_DATABASE_TYPE']) { case 'sqlite': case 'sqlite3': case 'pdo_sqlite': $this->db = ZBlogPHP::InitializeDB($this->option['ZC_DATABASE_TYPE']); if ($this->db->Open(array($this->usersdir . 'data/' . $this->option['ZC_SQLITE_NAME'], $this->option['ZC_SQLITE_PRE'])) == false) { $this->ShowError(69, __FILE__, __LINE__); } break; case 'pgsql': case 'pdo_pgsql': $this->db = ZBlogPHP::InitializeDB($this->option['ZC_DATABASE_TYPE']); if ($this->db->Open(array($this->option['ZC_PGSQL_SERVER'], $this->option['ZC_PGSQL_USERNAME'], $this->option['ZC_PGSQL_PASSWORD'], $this->option['ZC_PGSQL_NAME'], $this->option['ZC_PGSQL_PRE'], $this->option['ZC_PGSQL_PORT'], $this->option['ZC_PGSQL_PERSISTENT'])) == false) { $this->ShowError(67, __FILE__, __LINE__); } break; case 'mysql': case 'mysqli': case 'pdo_mysql': default: $this->db = ZBlogPHP::InitializeDB($this->option['ZC_DATABASE_TYPE']); if ($this->db->Open(array($this->option['ZC_MYSQL_SERVER'], $this->option['ZC_MYSQL_USERNAME'], $this->option['ZC_MYSQL_PASSWORD'], $this->option['ZC_MYSQL_NAME'], $this->option['ZC_MYSQL_PRE'], $this->option['ZC_MYSQL_PORT'], $this->option['ZC_MYSQL_PERSISTENT'], $this->option['ZC_MYSQL_ENGINE'])) == false) { $this->ShowError(67, __FILE__, __LINE__); } break; } //add utf8mb4 if ($this->db->type == 'mysql' && version_compare($this->db->version, '5.5.3') < 0) { Add_Filter_Plugin('Filter_Plugin_DbSql_Filter', 'utf84mb_filter'); Add_Filter_Plugin('Filter_Plugin_Edit_Begin', 'utf84mb_fixHtmlSpecialChars'); } $this->isconnected = true; return true; }