Wo nutzt phpBB addslashes bei $message?
Verfasst: 08.02.2007 01:40
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:
dann gehts an prepare_post():
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:
Damit ist $message fertig bearbeitet worden und kann nun per submit_post() in die Datenbank:
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:
Ich finds einfach nicht 
EDIT:
Ok, gefunden.. muss man erstmal darauf kommen. War in common.php:
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'] : '';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);Code: Alles auswählen
$html_entities_match = array('#&(?!(\#[0-9]+;))#', '#<#', '#>#', '#"#');
$html_entities_replace = array('&', '<', '>', '"');
$message = preg_replace($html_entities_match, $html_entities_replace, $message);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);Code: Alles auswählen
add_search_words('single', $post_id, stripslashes($post_message), stripslashes($post_subject));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);
}