diff --git a/inc/database.php b/inc/database.php index 95dfc775..24959d0c 100644 --- a/inc/database.php +++ b/inc/database.php @@ -121,14 +121,14 @@ function query($query) { return $pdo->query($query); } -function db_error($PDOStatement=null) { - global $pdo; +function db_error($PDOStatement = null) { + global $pdo, $db_error; if (isset($PDOStatement)) { - $err = $PDOStatement->errorInfo(); - return $err[2]; + $db_error = $PDOStatement->errorInfo(); + return $db_error[2]; } - $err = $pdo->errorInfo(); - return $err[2]; + $db_error = $pdo->errorInfo(); + return $db_error[2]; } diff --git a/inc/display.php b/inc/display.php index 4972d563..dddb6559 100644 --- a/inc/display.php +++ b/inc/display.php @@ -58,7 +58,7 @@ function createBoardlist($mod=false) { } function error($message, $priority = true, $debug_stuff = false) { - global $board, $mod, $config; + global $board, $mod, $config, $db_error; if ($config['syslog'] && $priority !== false) { // Use LOG_NOTICE instead of LOG_ERR or LOG_WARNING because most error message are not significant. @@ -70,6 +70,10 @@ function error($message, $priority = true, $debug_stuff = false) { die('Error: ' . $message . "\n"); } + if ($config['debug'] && isset($db_error)) { + $debug_stuff = array_combine(array('SQLSTATE', 'Error code', 'Error message'), $db_error); + } + die(Element('page.html', array( 'config' => $config, 'title' => _('Error'), diff --git a/inc/functions.php b/inc/functions.php index b6bdd809..6c903663 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -155,19 +155,9 @@ function loadConfig() { } if ($config['verbose_errors']) { - set_error_handler(function($errno, $errstr, $errfile, $errline) { - if (error_reporting() == 0) - return false; // Looks like this warning was suppressed by the @ operator. - error(utf8tohtml($errstr), true, array( - 'file' => $errfile, - 'line' => $errline, - 'errno' => $errno, - 'error' => $errstr, - 'backtrace' => array_slice(debug_backtrace(), 1) - )); - }); + set_error_handler('verbose_error_handler'); error_reporting(E_ALL); - ini_set('display_errors', true); + ini_set('display_errors', false); ini_set('html_errors', false); } @@ -244,6 +234,17 @@ function _syslog($priority, $message) { } } +function verbose_error_handler($errno, $errstr, $errfile, $errline) { + if (error_reporting() == 0) + return false; // Looks like this warning was suppressed by the @ operator. + error(utf8tohtml($errstr), true, array( + 'file' => $errfile . ':' . $errline, + 'errno' => $errno, + 'error' => $errstr, + 'backtrace' => array_slice(debug_backtrace(), 1) + )); +} + function create_antibot($board, $thread = null) { require_once dirname(__FILE__) . '/anti-bot.php'; diff --git a/mod.php b/mod.php index ee05c349..bdc89b87 100644 --- a/mod.php +++ b/mod.php @@ -23,7 +23,7 @@ $query = isset($_SERVER['QUERY_STRING']) ? urldecode($_SERVER['QUERY_STRING']) : $pages = array( '' => ':?/', // redirect to dashboard '/' => 'dashboard', // dashboard - '/confirm/(.+)' => 'confirm', // confirm action (if javascript didn't work) + '/confir(m/(.+)' => 'confirm', // confirm action (if javascript didn't work) '/logout' => 'logout', // logout '/users' => 'users', // manage users