Seite 1 von 1

Wo nutzt phpBB addslashes bei $message?

Verfasst: 08.02.2007 01:40
von mgutt
Ich kann weder in der posting.php noch in der functions_post.php die Stelle finden, wo aus ' das \' wird.

Wenn html deaktiviert ist ersetzt ja ein str_replace das " gegen ein "

Aber wo wird addslashes bei der message eingesetzt?

Eigentlich dachte ich, ich wäre jeden Schritt nachgegangen:

posting.php zieht sich die message mit evtl. anführungszeichen:

Code: Alles auswählen

			$message = ( !empty($HTTP_POST_VARS['message']) ) ? $HTTP_POST_VARS['message'] : '';
dann gehts an prepare_post():

Code: Alles auswählen

			prepare_post($mode, $post_data, $bbcode_on, $html_on, $smilies_on, $error_msg, $username, $bbcode_uid, $subject, $message, $poll_title, $poll_options, $poll_length);
in prepare_post() wird einmal trim() gesetzt und dann direkt weiter an prepare_message(). In prepare_message() gibts komischerweise wieder ein trim(), aber das soll mich jetzt nicht stören. html ist aus, weshalb nun &, <, > und " ersetzt wird:

Code: Alles auswählen

$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#', '#"#');
$html_entities_replace = array('&', '<', '>', '"');
$message = preg_replace($html_entities_match, $html_entities_replace, $message);
Damit ist $message fertig bearbeitet worden und kann nun per submit_post() in die Datenbank:

Code: Alles auswählen

				submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
Hier wurde nur \' gegen '' getauscht. ' müsste hier also noch bestehen, aber ist es nicht. Denn am Ende von submit_post(), nachdem der Text bereits erfolgreich in der Datebank gelandet ist, scheinen die slashes ja zu stören:

Code: Alles auswählen

add_search_words('single', $post_id, stripslashes($post_message), stripslashes($post_subject));
Ich finds einfach nicht :x


EDIT:
Ok, gefunden.. muss man erstmal darauf kommen. War in common.php:

Code: Alles auswählen

	if( is_array($HTTP_POST_VARS) )
	{
		while( list($k, $v) = each($HTTP_POST_VARS) )
		{
			if( is_array($HTTP_POST_VARS[$k]) )
			{
				while( list($k2, $v2) = each($HTTP_POST_VARS[$k]) )
				{
					$HTTP_POST_VARS[$k][$k2] = addslashes($v2);
				}
				@reset($HTTP_POST_VARS[$k]);
			}
			else
			{
				$HTTP_POST_VARS[$k] = addslashes($v);
			}
		}
		@reset($HTTP_POST_VARS);
	}