From a4a5a03749f342ca6cb55d2c392ed485f805a850 Mon Sep 17 00:00:00 2001 From: tianya Date: Fri, 1 Apr 2022 19:21:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/system/common.inc.php | 5 ++-- src/system/database/dedesqli.class.php | 36 +++++++++++------------- src/system/database/dedesqlite.class.php | 31 ++++++++++---------- 3 files changed, 34 insertions(+), 38 deletions(-) diff --git a/src/system/common.inc.php b/src/system/common.inc.php index 2ce7ed2a..d8d6f977 100755 --- a/src/system/common.inc.php +++ b/src/system/common.inc.php @@ -248,13 +248,14 @@ if (!defined('MYSQL_ASSOC')) { if (!defined('MYSQL_NUM')) { define('MYSQL_NUM', MYSQLI_NUM); } +//全局常用函数 +require_once(DEDEINC.'/common.func.php'); + if ($GLOBALS['cfg_dbtype'] == 'mysql' || $GLOBALS['cfg_dbtype'] == 'mysqli') { require_once(DEDEINC.'/database/dedesqli.class.php'); } else { require_once(DEDEINC.'/database/dedesqlite.class.php'); } -//全局常用函数 -require_once(DEDEINC.'/common.func.php'); //载入小助手配置,并对其进行默认初始化 $cfg_helper_autoload = array( 'charset', /* 编码小助手 */ diff --git a/src/system/database/dedesqli.class.php b/src/system/database/dedesqli.class.php index b7ef565c..5aeaa7e2 100755 --- a/src/system/database/dedesqli.class.php +++ b/src/system/database/dedesqli.class.php @@ -20,7 +20,7 @@ if (!defined('DEDEINC')) exit('dedebiz'); //在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作 //为了防止错误,操作完后不必关闭数据库 if (!function_exists("mysqli_init")) { - echo "DedeBIZ提示:尚未发现开启mysqli模块,请在php.ini中启用`extension=mysqli`"; + ShowMsg("尚未发现开启mysqli模块,请在php.ini中启用`extension=mysqli`","javasctipt:;",-1) ; exit; } $dsql = $dsqli = $db = new DedeSqli(FALSE); @@ -45,7 +45,7 @@ class DedeSqli var $parameters; var $isClose; var $safeCheck; - var $showError = false; + var $showError = true; var $recordLog = false; //记录日志到data/mysqli_record_log.inc便于进行调试 var $isInit = false; var $pconnect = false; @@ -108,14 +108,20 @@ class DedeSqli @list($dbhost, $dbport) = explode(':', $this->dbHost); !$dbport && $dbport = 3306; $this->linkID = mysqli_init(); - mysqli_real_connect($this->linkID, $dbhost, $this->dbUser, $this->dbPwd, false, $dbport); - mysqli_errno($this->linkID) != 0 && $this->DisplayError('系统提示:链接('.$this->pconnect.') 到MySQL发生错误'); + try { + mysqli_real_connect($this->linkID, $dbhost, $this->dbUser, $this->dbPwd, false, $dbport); + mysqli_errno($this->linkID) != 0 && $this->DisplayError('链接('.$this->pconnect.') 到MySQL发生错误'); + } catch (Exception $e) { + $this->DisplayError("连接数据库失败,可能数据库密码不对或数据库服务器出错"); + exit; + } + //复制一个对象副本 CopySQLiPoint($this); } //处理错误,成功连接则选择数据库 if (!$this->linkID) { - $this->DisplayError("系统提示:连接数据库失败,可能数据库密码不对或数据库服务器出错"); + $this->DisplayError("连接数据库失败,可能数据库密码不对或数据库服务器出错"); exit(); } $this->isInit = TRUE; @@ -468,7 +474,7 @@ class DedeSqli } function RecordLog($runtime = 0) { - $RecordLogFile = dirname(__FILE__).'/../data/mysqli_record_log.inc'; + $RecordLogFile = DEDEDATA.'/mysqli_record_log.inc'; $url = $this->GetCurUrl(); $savemsg = <<showError) { - $emsg = ''; - $emsg .= "

DedeBIZ Error Warning!

\r\n"; - $emsg .= "
Technical Support: https://www.dedebiz.com
"; - $emsg .= "
\r\n"; - $emsg .= "

Error page: ".$this->GetCurUrl()."
\r\n"; - $emsg .= "
Error infos: {$msg}
\r\n"; - $emsg .= "
\r\n"; - - echo $emsg; + ShowMsg("{$msg}", "javascript:;", -1); + exit; } $savemsg = 'Page: '.$this->GetCurUrl()."\r\nError: ".$msg."\r\nTime".date('Y-m-d H:i:s'); //保存MySql错误日志 @@ -536,7 +532,7 @@ if (!function_exists('CheckSql')) { $error = ''; $old_pos = 0; $pos = -1; - $log_file = DEDEINC.'/../data/'.md5($cfg_cookie_encode).'_safe.txt'; + $log_file = DEDEDATA.'/'.md5($cfg_cookie_encode).'_safe.txt'; $userIP = GetIP(); $getUrl = GetCurUrl(); //如果是普通查询语句,直接过滤一些特殊语法 diff --git a/src/system/database/dedesqlite.class.php b/src/system/database/dedesqlite.class.php index 2441d8d5..76e9a262 100755 --- a/src/system/database/dedesqlite.class.php +++ b/src/system/database/dedesqlite.class.php @@ -17,11 +17,15 @@ if (!defined('DEDEINC')) exit('dedebiz'); * @link https://www.dedebiz.com */ @set_time_limit(0); +if (!extension_loaded("sqlite3")) { + ShowMsg("尚未发现开启sqlite3模块,请在php.ini中启用`extension=sqlite3`","javasctipt:;",-1) ; + exit; +} //在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作 //为了防止错误,操作完后不必关闭数据库 $dsql = $dsqlitete = $db = new DedeSqlite(FALSE); /** - * Dede MySQLi数据库类 + * Dede SQLite3数据库类 * * @package DedeSqli * @subpackage DedeBIZ.Libraries @@ -49,7 +53,7 @@ class DedeSqlite var $parameters; var $isClose; var $safeCheck; - var $showError = false; + var $showError = true; var $recordLog = false; //记录日志到data/mysqli_record_log.inc便于进行调试 var $isInit = false; var $pconnect = false; @@ -249,6 +253,10 @@ class DedeSqlite $t1 = ExecTime(); //var_dump($this->queryString); $this->result[$id] = $this->linkID->query($this->queryString); + if (!$this->result[$id]) { + $this->DisplayError("执行SQL错误:{$this->linkID->lastErrorMsg()}"); + exit; + } //var_dump(mysql_error()); //查询性能测试 if ($this->recordLog) { @@ -479,7 +487,7 @@ class DedeSqlite } function RecordLog($runtime = 0) { - $RecordLogFile = dirname(__FILE__).'/../data/mysqli_record_log.inc'; + $RecordLogFile = DEDEDATA.'/mysqli_record_log.inc'; $url = $this->GetCurUrl(); $savemsg = <<showError) { - $emsg = ''; - $emsg .= "

DedeBIZ Error Warning!

\r\n"; - $emsg .= "
Technical Support: https://www.dedebiz.com
"; - $emsg .= "
\r\n"; - $emsg .= "

Error page: ".$this->GetCurUrl()."
\r\n"; - $emsg .= "
Error infos: {$msg}
\r\n"; - $emsg .= "
\r\n"; - echo $emsg; + ShowMsg("{$msg}", "javascript:;", -1); + exit; } $savemsg = 'Page: '.$this->GetCurUrl()."\r\nError: ".$msg."\r\nTime".date('Y-m-d H:i:s'); - //保存MySql错误日志 + //保存SQLite错误日志 $fp = @fopen($errorTrackFile, 'a'); @fwrite($fp, '<'.'?php exit();'."\r\n/*\r\n{$savemsg}\r\n*/\r\n?".">\r\n"); @fclose($fp);