Seite 1 von 2

Nach Update,Probleme mit den BBcodes

Verfasst: 10.04.2006 13:39
von Sanchez17
Hi,

wie schon gesagt,gibt es seit dem Update 2 momentan bekannte Probleme mit den BBcodes:

Einmal kann man nicht mehr so zitieren:[quote=Sanchez] sonder nur noch so [quote]!wenn man es wie im ersten bsp. macht,wird einfach nur so angezeigt,als wäre es normal hingeschrieben.

Und genau das gleiche ist auch bei <-- Dies macht er auch nicht,nur das normale [url].

Als ich eine alte functions_post.php hochladete,ging es wieder.Daher schätze ich,das es daran liegt.Ich habe hier mal die bearbeitete Datei (nach dem Update):
[url=http://fussball-international.net/functions_post_bearbeitete.txt]Datei nach dem Update

und hier eine vor dem Update:
Klick mich

Kann mir jemand helfen?


Edit:Ich bin insg. 3 mal das Update bei dieser datei durchgegangen,und finde immernoch keinen fehler!

Edit 2:Mir fiel gerade auf,das auch wenn ich die alte functions_post.php hineintuhe,die Funktion [url=...] nicht funkt.Es wird dann einfach eine Leerzeichen gezeigt.

Verfasst: 10.04.2006 19:28
von Sanchez17
ich habe mich jetzt nochmal intensive befasst,und konnt alle Problem bis aud das mit "[Quote=""]" beseitigen.Da hat sich ein Fheler in der BBcode.php eingeschlichen.

Aber wie gesagt funkt es noch nicht so ganz mit "[Quote=""]"...

Ich weiß glaub ich auch an welchen Codes es liegt.
Man soll bei Update insg. 3 Veränderungen in der functions_post.php machen.Wenn ich die letzten beide mache,und uploade,funktioniert alles.Ledeglich wenn ich auch den 1.Code veränder,geht es nicht mehr.

Hier mal ein ausschnitt der momentan function_post.php (Mit den 2 letzten veränderungen):

http://fussball-international.net/functions_post.txt

Und bei dieser änderung kommt das Problem:


Code: Alles auswählen

#
#-----[ FIND ]---------------------------------------------
# Line 44
		$allowed_html_tags = split(',', $board_config['allow_html_tags']);

		$end_html = 0;
		$start_html = 1;
		$tmp_message = '';
		$message = ' ' . $message . ' ';

		while ($start_html = strpos($message, '<', $start_html))
		{
			$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $end_html + 1, ($start_html - $end_html - 1)));

			if ($end_html = strpos($message, '>', $start_html))
			{
				$length = $end_html - $start_html + 1;
				$hold_string = substr($message, $start_html, $length);

				if (($unclosed_open = strrpos(' ' . $hold_string, '<')) != 1)
				{
					$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($hold_string, 0, $unclosed_open - 1));
					$hold_string = substr($hold_string, $unclosed_open - 1);
				}

				$tagallowed = false;
				for ($i = 0; $i < sizeof($allowed_html_tags); $i++)
				{
					$match_tag = trim($allowed_html_tags[$i]);
					if (preg_match('#^<\/?' . $match_tag . '[> ]#i', $hold_string))
					{
						$tagallowed = (preg_match('#^<\/?' . $match_tag . ' .*?(style[\t ]*?=|on[\w]+[\t ]*?=)#i', $hold_string)) ? false : true;
					}
				}

				$tmp_message .= ($length && !$tagallowed) ? preg_replace($html_entities_match, $html_entities_replace, $hold_string) : $hold_string;

				$start_html += $length;
			}
			else
			{
				$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $start_html, strlen($message)));

				$start_html = strlen($message);
				$end_html = $start_html;
			}
		}

		if (!$end_html || ($end_html != strlen($message) && $tmp_message != ''))
		{
			$tmp_message .= preg_replace($html_entities_match, $html_entities_replace, substr($message, $end_html + 1));
		}

		$message = ($tmp_message != '') ? trim($tmp_message) : trim($message);

#
#-----[ REPLACE WITH ]---------------------------------------------
#
		// If HTML is on, we try to make it safe
		// This approach is quite agressive and anything that does not look like a valid tag
		// is going to get converted to HTML entities
		$message = stripslashes($message);
		$html_match = '#<[^\w<]*(\w+)((?:"[^"]*"|\'[^\']*\'|[^<>\'"])+)?>#';
		$matches = array();

		$message_split = preg_split($html_match, $message);
		preg_match_all($html_match, $message, $matches);

		$message = '';

		foreach ($message_split as $part)
		{
			$tag = array(array_shift($matches[0]), array_shift($matches[1]), array_shift($matches[2]));
			$message .= htmlspecialchars($part) . clean_html($tag);
		}

		$message = addslashes($message);

Verfasst: 10.04.2006 23:48
von Good-Stuff
Welches Update war es den? 19 oder 20. Habe das Problem schon mit Update 19.

Verfasst: 11.04.2006 00:18
von Sanchez17
Da ich immer auf dem neusten Stand bin,war bzw. ist es beim Update auf phpbb2.0.20...

Verfasst: 11.04.2006 00:37
von cool_Torsten
OPEN: includes/functions_post.php

FIND

Code: Alles auswählen

$message = addslashes($message); 
AFTER ADD

Code: Alles auswählen

$message = str_replace('"', '\\"', $message); 

Funzt 100%, einfach dann mal den Index aktualisieren und einen neuen Beitrag mit quote oder auch Link erstellen - und du wirst sehen es klappt! 8)

MfG cool_Torsten

Verfasst: 11.04.2006 00:45
von Sanchez17
Ja klappt,

Danke :wink:

Verfasst: 11.04.2006 18:47
von cem
Yeah, dickes danke! :)

Verfasst: 11.04.2006 20:35
von Maidenaustria
Das wird die Moderatoren freuen - bin durch die Suche auf diesen Beitrag gestossen...

Aber viel wichtiger:
Vielen Dank an cool_Torsten!!!
Funktioniert auch bei mir!!!

Verfasst: 12.04.2006 18:31
von tha_specializt
DANKE!! Kann mal bitte ein Moderator den Thread sticky machen? Ich denke, solange noch kein offizieller Fix dafür da is, wird das hier vielen Leuten helfen :o

Verfasst: 13.04.2006 01:52
von Topper Harley
Also die Codezeile bei FIND durch die mit der von AFTERADD ersetzen?

Verzeiht die dumme Frage, aber ich hab PHP gerade erst kennen gelernt und noch KEINE Ahnung...