Avoid rendering BB code when showing PHP/MySQL errors

Signed-off-by: Michal Čihař <michal@cihar.com>
This commit is contained in:
Michal Čihař 2016-09-02 14:17:52 +02:00
parent 7ddcbc0de6
commit 733a5d5821
3 changed files with 31 additions and 5 deletions

View File

@ -175,16 +175,19 @@ class ErrorHandler
$this->errors[$error->getHash()] = $error;
switch ($error->getNumber()) {
case E_USER_NOTICE:
case E_USER_WARNING:
case E_STRICT:
case E_DEPRECATED:
case E_NOTICE:
case E_WARNING:
case E_CORE_WARNING:
case E_COMPILE_WARNING:
case E_USER_ERROR:
case E_RECOVERABLE_ERROR:
/* Avoid rendering BB code in PHP errors */
$error->setBBCode(false);
break;
case E_USER_NOTICE:
case E_USER_WARNING:
case E_USER_ERROR:
// just collect the error
// display is called from outside
break;

View File

@ -112,6 +112,14 @@ class Message
*/
protected $isDisplayed = false;
/**
* Whether to use BB code when displaying.
*
* @access protected
* @var boolean
*/
protected $useBBCode = true;
/**
* Unique id
*
@ -236,6 +244,7 @@ class Message
{
$r = new Message('', $type);
$r->setMessage($message);
$r->setBBCode(false);
return $r;
}
@ -392,6 +401,18 @@ class Message
return $this->getNumber() === Message::ERROR;
}
/**
* Set whether we should use BB Code when rendering.
*
* @param boolean $useBBCode Use BB Code?
*
* @return void
*/
public function setBBCode($useBBCode)
{
$this->useBBCode = $useBBCode;
}
/**
* set raw message (overrides string)
*
@ -647,7 +668,9 @@ class Message
$message = Message::format($message, $this->getParams());
}
$message = Message::decodeBB($message);
if ($this->useBBCode) {
$message = Message::decodeBB($message);
}
foreach ($this->getAddedMessages() as $add_message) {
$message .= $add_message;

View File

@ -114,7 +114,7 @@ abstract class AuthenticationPlugin
} else {
$dbi_error = $GLOBALS['dbi']->getError();
if (!empty($dbi_error)) {
return PMA_sanitize($dbi_error);
return htmlspecialchars($dbi_error);
} elseif (isset($GLOBALS['errno'])) {
return '#' . $GLOBALS['errno'] . ' '
. __('Cannot log in to the MySQL server');