| @@ -248,13 +248,14 @@ if (!defined('MYSQL_ASSOC')) { | |||||
| if (!defined('MYSQL_NUM')) { | if (!defined('MYSQL_NUM')) { | ||||
| define('MYSQL_NUM', MYSQLI_NUM); | define('MYSQL_NUM', MYSQLI_NUM); | ||||
| } | } | ||||
| //全局常用函数 | |||||
| require_once(DEDEINC.'/common.func.php'); | |||||
| if ($GLOBALS['cfg_dbtype'] == 'mysql' || $GLOBALS['cfg_dbtype'] == 'mysqli') { | if ($GLOBALS['cfg_dbtype'] == 'mysql' || $GLOBALS['cfg_dbtype'] == 'mysqli') { | ||||
| require_once(DEDEINC.'/database/dedesqli.class.php'); | require_once(DEDEINC.'/database/dedesqli.class.php'); | ||||
| } else { | } else { | ||||
| require_once(DEDEINC.'/database/dedesqlite.class.php'); | require_once(DEDEINC.'/database/dedesqlite.class.php'); | ||||
| } | } | ||||
| //全局常用函数 | |||||
| require_once(DEDEINC.'/common.func.php'); | |||||
| //载入小助手配置,并对其进行默认初始化 | //载入小助手配置,并对其进行默认初始化 | ||||
| $cfg_helper_autoload = array( | $cfg_helper_autoload = array( | ||||
| 'charset', /* 编码小助手 */ | 'charset', /* 编码小助手 */ | ||||
| @@ -20,7 +20,7 @@ if (!defined('DEDEINC')) exit('dedebiz'); | |||||
| //在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作 | //在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作 | ||||
| //为了防止错误,操作完后不必关闭数据库 | //为了防止错误,操作完后不必关闭数据库 | ||||
| if (!function_exists("mysqli_init")) { | if (!function_exists("mysqli_init")) { | ||||
| echo "DedeBIZ提示:尚未发现开启mysqli模块,请在php.ini中启用`extension=mysqli`"; | |||||
| ShowMsg("尚未发现开启mysqli模块,请在php.ini中启用`extension=mysqli`","javasctipt:;",-1) ; | |||||
| exit; | exit; | ||||
| } | } | ||||
| $dsql = $dsqli = $db = new DedeSqli(FALSE); | $dsql = $dsqli = $db = new DedeSqli(FALSE); | ||||
| @@ -45,7 +45,7 @@ class DedeSqli | |||||
| var $parameters; | var $parameters; | ||||
| var $isClose; | var $isClose; | ||||
| var $safeCheck; | var $safeCheck; | ||||
| var $showError = false; | |||||
| var $showError = true; | |||||
| var $recordLog = false; //记录日志到data/mysqli_record_log.inc便于进行调试 | var $recordLog = false; //记录日志到data/mysqli_record_log.inc便于进行调试 | ||||
| var $isInit = false; | var $isInit = false; | ||||
| var $pconnect = false; | var $pconnect = false; | ||||
| @@ -108,14 +108,20 @@ class DedeSqli | |||||
| @list($dbhost, $dbport) = explode(':', $this->dbHost); | @list($dbhost, $dbport) = explode(':', $this->dbHost); | ||||
| !$dbport && $dbport = 3306; | !$dbport && $dbport = 3306; | ||||
| $this->linkID = mysqli_init(); | $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("<span style='color:#dc3545'>连接数据库失败,可能数据库密码不对或数据库服务器出错</span>"); | |||||
| exit; | |||||
| } | |||||
| //复制一个对象副本 | //复制一个对象副本 | ||||
| CopySQLiPoint($this); | CopySQLiPoint($this); | ||||
| } | } | ||||
| //处理错误,成功连接则选择数据库 | //处理错误,成功连接则选择数据库 | ||||
| if (!$this->linkID) { | if (!$this->linkID) { | ||||
| $this->DisplayError("系统提示:<span style='color:#dc3545'>连接数据库失败,可能数据库密码不对或数据库服务器出错</span>"); | |||||
| $this->DisplayError("<span style='color:#dc3545'>连接数据库失败,可能数据库密码不对或数据库服务器出错</span>"); | |||||
| exit(); | exit(); | ||||
| } | } | ||||
| $this->isInit = TRUE; | $this->isInit = TRUE; | ||||
| @@ -468,7 +474,7 @@ class DedeSqli | |||||
| } | } | ||||
| function RecordLog($runtime = 0) | function RecordLog($runtime = 0) | ||||
| { | { | ||||
| $RecordLogFile = dirname(__FILE__).'/../data/mysqli_record_log.inc'; | |||||
| $RecordLogFile = DEDEDATA.'/mysqli_record_log.inc'; | |||||
| $url = $this->GetCurUrl(); | $url = $this->GetCurUrl(); | ||||
| $savemsg = <<<EOT | $savemsg = <<<EOT | ||||
| @@ -484,20 +490,10 @@ EOT; | |||||
| //显示数据链接错误信息 | //显示数据链接错误信息 | ||||
| function DisplayError($msg) | function DisplayError($msg) | ||||
| { | { | ||||
| $errorTrackFile = dirname(__FILE__).'/../../data/mysqli_error_trace.inc'; | |||||
| if (file_exists(dirname(__FILE__).'/../../data/mysqli_error_trace.php')) { | |||||
| @unlink(dirname(__FILE__).'/../../data/mysqli_error_trace.php'); | |||||
| } | |||||
| $errorTrackFile = DEDEDATA.'/mysqli_error_trace.inc'; | |||||
| if ($this->showError) { | if ($this->showError) { | ||||
| $emsg = ''; | |||||
| $emsg .= "<div><h3>DedeBIZ Error Warning!</h3>\r\n"; | |||||
| $emsg .= "<div><a href='https://www.dedebiz.com' target='_blank' style='color:#dc3545'>Technical Support: https://www.dedebiz.com</a></div>"; | |||||
| $emsg .= "<div style='line-helght:160%;font-size:14px;color:green'>\r\n"; | |||||
| $emsg .= "<div style='color:blue'><br>Error page: <span style='color:#dc3545'>".$this->GetCurUrl()."</span></div>\r\n"; | |||||
| $emsg .= "<div>Error infos: {$msg}</div>\r\n"; | |||||
| $emsg .= "<br></div></div>\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'); | $savemsg = 'Page: '.$this->GetCurUrl()."\r\nError: ".$msg."\r\nTime".date('Y-m-d H:i:s'); | ||||
| //保存MySql错误日志 | //保存MySql错误日志 | ||||
| @@ -536,7 +532,7 @@ if (!function_exists('CheckSql')) { | |||||
| $error = ''; | $error = ''; | ||||
| $old_pos = 0; | $old_pos = 0; | ||||
| $pos = -1; | $pos = -1; | ||||
| $log_file = DEDEINC.'/../data/'.md5($cfg_cookie_encode).'_safe.txt'; | |||||
| $log_file = DEDEDATA.'/'.md5($cfg_cookie_encode).'_safe.txt'; | |||||
| $userIP = GetIP(); | $userIP = GetIP(); | ||||
| $getUrl = GetCurUrl(); | $getUrl = GetCurUrl(); | ||||
| //如果是普通查询语句,直接过滤一些特殊语法 | //如果是普通查询语句,直接过滤一些特殊语法 | ||||
| @@ -17,11 +17,15 @@ if (!defined('DEDEINC')) exit('dedebiz'); | |||||
| * @link https://www.dedebiz.com | * @link https://www.dedebiz.com | ||||
| */ | */ | ||||
| @set_time_limit(0); | @set_time_limit(0); | ||||
| if (!extension_loaded("sqlite3")) { | |||||
| ShowMsg("尚未发现开启sqlite3模块,请在php.ini中启用`extension=sqlite3`","javasctipt:;",-1) ; | |||||
| exit; | |||||
| } | |||||
| //在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作 | //在工程所有文件中均不需要单独初始化这个类,可直接用 $dsql 或 $db 进行操作 | ||||
| //为了防止错误,操作完后不必关闭数据库 | //为了防止错误,操作完后不必关闭数据库 | ||||
| $dsql = $dsqlitete = $db = new DedeSqlite(FALSE); | $dsql = $dsqlitete = $db = new DedeSqlite(FALSE); | ||||
| /** | /** | ||||
| * Dede MySQLi数据库类 | |||||
| * Dede SQLite3数据库类 | |||||
| * | * | ||||
| * @package DedeSqli | * @package DedeSqli | ||||
| * @subpackage DedeBIZ.Libraries | * @subpackage DedeBIZ.Libraries | ||||
| @@ -49,7 +53,7 @@ class DedeSqlite | |||||
| var $parameters; | var $parameters; | ||||
| var $isClose; | var $isClose; | ||||
| var $safeCheck; | var $safeCheck; | ||||
| var $showError = false; | |||||
| var $showError = true; | |||||
| var $recordLog = false; //记录日志到data/mysqli_record_log.inc便于进行调试 | var $recordLog = false; //记录日志到data/mysqli_record_log.inc便于进行调试 | ||||
| var $isInit = false; | var $isInit = false; | ||||
| var $pconnect = false; | var $pconnect = false; | ||||
| @@ -249,6 +253,10 @@ class DedeSqlite | |||||
| $t1 = ExecTime(); | $t1 = ExecTime(); | ||||
| //var_dump($this->queryString); | //var_dump($this->queryString); | ||||
| $this->result[$id] = $this->linkID->query($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()); | //var_dump(mysql_error()); | ||||
| //查询性能测试 | //查询性能测试 | ||||
| if ($this->recordLog) { | if ($this->recordLog) { | ||||
| @@ -479,7 +487,7 @@ class DedeSqlite | |||||
| } | } | ||||
| function RecordLog($runtime = 0) | function RecordLog($runtime = 0) | ||||
| { | { | ||||
| $RecordLogFile = dirname(__FILE__).'/../data/mysqli_record_log.inc'; | |||||
| $RecordLogFile = DEDEDATA.'/mysqli_record_log.inc'; | |||||
| $url = $this->GetCurUrl(); | $url = $this->GetCurUrl(); | ||||
| $savemsg = <<<EOT | $savemsg = <<<EOT | ||||
| @@ -495,22 +503,13 @@ EOT; | |||||
| //显示数据链接错误信息 | //显示数据链接错误信息 | ||||
| function DisplayError($msg) | function DisplayError($msg) | ||||
| { | { | ||||
| $errorTrackFile = dirname(__FILE__).'/../../data/mysqli_error_trace.inc'; | |||||
| if (file_exists(dirname(__FILE__).'/../../data/mysqli_error_trace.php')) { | |||||
| @unlink(dirname(__FILE__).'/../../data/mysqli_error_trace.php'); | |||||
| } | |||||
| $errorTrackFile = DEDEDATA.'/sqlite_error_trace.inc'; | |||||
| if ($this->showError) { | if ($this->showError) { | ||||
| $emsg = ''; | |||||
| $emsg .= "<div><h3>DedeBIZ Error Warning!</h3>\r\n"; | |||||
| $emsg .= "<div><a href='https://www.dedebiz.com' target='_blank' style='color:#dc3545'>Technical Support: https://www.dedebiz.com</a></div>"; | |||||
| $emsg .= "<div style='line-helght:160%;font-size:14px;color:green'>\r\n"; | |||||
| $emsg .= "<div style='color:blue'><br>Error page: <span style='color:#dc3545'>".$this->GetCurUrl()."</span></div>\r\n"; | |||||
| $emsg .= "<div>Error infos: {$msg}</div>\r\n"; | |||||
| $emsg .= "<br></div></div>\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'); | $savemsg = 'Page: '.$this->GetCurUrl()."\r\nError: ".$msg."\r\nTime".date('Y-m-d H:i:s'); | ||||
| //保存MySql错误日志 | |||||
| //保存SQLite错误日志 | |||||
| $fp = @fopen($errorTrackFile, 'a'); | $fp = @fopen($errorTrackFile, 'a'); | ||||
| @fwrite($fp, '<'.'?php exit();'."\r\n/*\r\n{$savemsg}\r\n*/\r\n?".">\r\n"); | @fwrite($fp, '<'.'?php exit();'."\r\n/*\r\n{$savemsg}\r\n*/\r\n?".">\r\n"); | ||||
| @fclose($fp); | @fclose($fp); | ||||