1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-02-22 02:50:00 +01:00

[ticket/11711] Improve checks for unsupported characters and check subject

PHPBB3-11711
This commit is contained in:
Marc Alexander 2014-06-09 18:56:13 +02:00
parent 89f7067377
commit b8151b1299
3 changed files with 13 additions and 8 deletions

View File

@ -1198,13 +1198,9 @@ class parse_message extends bbcode_firstpass
// not supported by utf8_bin
if (preg_match_all('/[\x{10000}-\x{10FFFF}]/u', $this->message, $matches))
{
$character_list = '';
foreach ($matches[0] as $cur_match)
{
$character_list .= $cur_match . '<br />';
}
$this->warn_msg[] = $user->lang('UNSUPPORTED_CHARACTERS', $character_list);
return (!$update_this_message) ? $return_message : $this->warn_msg;
$character_list = implode('<br />', $matches[0]);
$this->warn_msg[] = $user->lang('UNSUPPORTED_CHARACTERS_MESSAGE', $character_list);
return $update_this_message ? $this->warn_msg : $return_message;
}
// Check for "empty" message. We do not check here for maximum length, because bbcode, smilies, etc. can add to the length.

View File

@ -256,7 +256,8 @@ $lang = array_merge($lang, array(
'UNAUTHORISED_BBCODE' => 'You cannot use certain BBCodes: %s.',
'UNGLOBALISE_EXPLAIN' => 'To switch this topic back from being global to a normal topic, you need to select the forum you wish this topic to be displayed.',
'UNSUPPORTED_CHARACTERS' => 'Your message contains the following unsupported characters:<br />%s',
'UNSUPPORTED_CHARACTERS_MESSAGE' => 'Your message contains the following unsupported characters:<br />%s',
'UNSUPPORTED_CHARACTERS_SUBJECT' => 'Your subject contains the following unsupported characters:<br />%s',
'UPDATE_COMMENT' => 'Update comment',
'URL_INVALID' => 'The URL you specified is invalid.',
'URL_NOT_FOUND' => 'The file specified could not be found.',

View File

@ -1028,6 +1028,14 @@ if ($submit || $preview || $refresh)
$error[] = $user->lang['EMPTY_SUBJECT'];
}
// Check for out-of-bounds characters that are currently
// not supported by utf8_bin
if (preg_match_all('/[\x{10000}-\x{10FFFF}]/u', $post_data['post_subject'], $matches))
{
$character_list = implode('<br />', $matches[0]);
$error[] = $user->lang('UNSUPPORTED_CHARACTERS_SUBJECT', $character_list);
}
$post_data['poll_last_vote'] = (isset($post_data['poll_last_vote'])) ? $post_data['poll_last_vote'] : 0;
if ($post_data['poll_option_text'] &&