Seite 1 von 1

Massenqoutes?

Verfasst: 22.08.2007 23:34
von nasir
gibt es eine Lösung womit man Massenqoutes einstellen kann? In mein Forum versuche irgendwelche Spammer Massenqoutes und sprengen das Template. Ich will hier nicht vor machen, aber der Code vertieft sich innerlich 100 mal.

z.B. 10 Zitate,

bei ca 50 wird das template gesprengt und man schreibt im Hintergrund weiter.

Und das nervt.

Verfasst: 23.08.2007 01:07
von gn#36
Hier mal eine Kurzform wie du das ganze auf z.b. 10 begrenzen kannst. Alle anderen werden der Einfachheit durch den Text [ERROR] bzw. [/ERROR] ersetzt.

öffne bbcode.php

finde

Code: Alles auswählen

if ($open_is_regexp)
						{
							$start_tag = preg_replace($open_tag[$start_tag_index], $open_regexp_replace[$start_tag_index], $start_tag);
						}
ersetze durch

Code: Alles auswählen

if ($open_is_regexp && $curr_nesting_depth < 10)
						{
							$start_tag = preg_replace($open_tag[$start_tag_index], $open_regexp_replace[$start_tag_index], $start_tag);
						}
						elseif($open_is_regexp)
						{
							$start_tag = preg_replace($open_tag[$start_tag_index],"[ERROR]",$start_tag);
						}
Suche

Code: Alles auswählen

if ($open_is_regexp)
								{
									$text = $before_start_tag . $start_tag;
								}
else
								{
									$text = $before_start_tag . substr($start_tag, 0, $start_length - 1) . ":$uid]";
								}
ersetze durch

Code: Alles auswählen

if ($open_is_regexp)
								{
									$text = $before_start_tag . $start_tag;
								}
								elseif($curr_nesting_depth < 10)
								{
									$text = $before_start_tag . substr($start_tag, 0, $start_length - 1) . ":$uid]";
								}
								else
								{
									$text = $before_start_tag . "[ERROR]";
								}
direkt darunter das hier:

Code: Alles auswählen

$text .= $between_tags . substr($close_tag_new, 0, $close_tag_new_length - 1) . ":$uid]";
durch das hier ersetzen:

Code: Alles auswählen

if($curr_nesting_depth < 10)
								{
									$text .= $between_tags . substr($close_tag_new, 0, $close_tag_new_length - 1) . ":$uid]";
								}
								else
								{
									$text .= $between_tags . "[/ERROR]";
								}
Ist zwar auch nicht unbedingt hübsch, aber sollte zumindest den Breakup verhindern. Du kannst die [ERROR] und [/ERROR] auch durch leere Strings ersetzen, nur
bzw.
sollte nicht rein, das könnte zu Endlosschleifen führen (im Prinzip könntest du nach den Ersetzungen [ERROR] und [/ERROR] wieder durch die Originale ersetzen, das habe ich aber jetzt mal nicht ausgeführt).
Bitte vor den Änderungen ein Backup machen.
Bei 50 Quotes sollte das ganze dann so aussehen: