Seite 1 von 3

bbcode einbinden in extra Seite

Verfasst: 26.11.2004 19:06
von Dave
Hi.

Ich will den bbcode auf einer Foren seite nutzen.
Ich habe ihn folgender masen eingebunden:

Code: Alles auswählen

//
// If the board has HTML off but the post has HTML
// on then we process it, else leave it alone
//
if ( !$board_config['allow_html'] )
{
	$message = preg_replace('#(<)([\/]?.*?)(>)#is', "<\\2>", $message);
}

//
// Parse message and/or sig for BBCode if reqd
//
$bbcode_uid = $clan['bbcode_uid'];

echo $message.'<br />';
if ( $board_config['allow_bbcode'] )
{
	if ( $bbcode_uid != '' )
	{
		$message = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($message, $bbcode_uid) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message);
	}
}
echo $message;
$message = make_clickable($message);
//
// Parse smilies
//
if ( $board_config['allow_smilies'] )
{
	$message = smilies_pass($message);
}
if (count($orig_word))
{
	$post_subject = preg_replace($orig_word, $replacement_word, $post_subject);
	$message = str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "preg_replace(\$orig_word, \$replacement_word, '\\0')", '>' . $message . '<'), 1, -1));
}
$message = str_replace("\n", "\n<br />\n", $message);
Nur will der so nicht. ltext klappt. alles andere nicht :roll:


MfG
Dave

Verfasst: 26.11.2004 19:30
von MrMind
Mh naja wenn du die bbcode.php mit include eingebunden hast, dann sollte es eigentlich auch klappen.

Mh wenn gar nichts geparst wird, würde ich es ja verstehen, aber warum er [url] parst *seltsam. Wie rufst du denn die Message ab??? Aus einer DB?? Wenn ja, dann prüf mal ob in der DB in jedem BBCode auch die UID steht, wie folgt:

Code: Alles auswählen

 [code:UID] [/code:UID] 
Er parst nämlich nur die BBCodes die auch die richtige UID besitzt.

Mfg
MrMind

Verfasst: 26.11.2004 20:18
von Dave
wie erstelle ich die UID?

Verfasst: 26.11.2004 22:05
von MrMind
Das ist die Funktion in der bbcode.php die die UID dir gibt:

Code: Alles auswählen

// Need to initialize the random numbers only ONCE
mt_srand( (double) microtime() * 1000000);

function make_bbcode_uid()
{
	// Unique ID for this message..

	$uid = md5(mt_rand());
	$uid = substr($uid, 0, BBCODE_UID_LEN);

	return $uid;
}
Aber diese UID muss du auch immer in der DB mitspeichern, damit er es auch richtig interpretiert.

PS: Such mal in der KB nach BBCodes und UID, da findest du acuh noch einen Artikel darüber.

Mfg
MrMind

Verfasst: 27.11.2004 12:01
von Blutgerinsel
Das Teil soll vor bösen überraschungen schützen da nur die IDs und dem BBCODE ersetzt werden.....

Man kann sagen das zuerst die BBCODES geparst werden und dann mit der ID in der DB liegen. Dann bei der Anzeige werden nur BBCODES mit stimmiger BBCODE Start und END ID also die Gegenparts berrücksichtigt dadurch ist die Abarbeitung etwas schneller......

Müsste also theoretisch schon beim Einfügen geparst werden und dann noch obligatorisch bei der Ausgabe...

Verfasst: 27.11.2004 17:23
von MrMind
Blutgerinsel hat geschrieben:Das Teil soll vor bösen überraschungen schützen da nur die IDs und dem BBCODE ersetzt werden.....

Man kann sagen das zuerst die BBCODES geparst werden und dann mit der ID in der DB liegen. Dann bei der Anzeige werden nur BBCODES mit stimmiger BBCODE Start und END ID also die Gegenparts berrücksichtigt dadurch ist die Abarbeitung etwas schneller......

Müsste also theoretisch schon beim Einfügen geparst werden und dann noch obligatorisch bei der Ausgabe...
genau und zwar erst ne UID erstellen:

Dann die Funktion aufrufen die alle BBcodes mit der UID versieht und dann in die DB sichern + der UID in ein extra Feld.
Beim ausgeben, die UID wieder an die passende Funktion übergeben.

Beim editieren weiß ich jetzt net wie das abläuft, aber in meiner BBCode Klasse die ich anhand des wissens von der phpBB bbcode.php angelegt hatte, habe ich ne extra Funktion, die diese UID wieder aus den BBCodes entnimmt, damit dem User nichts auffällt etc.

Und beim editieren wird ne neue UID genommen, sonst besteht ein Sicherheitsrisiko.

Mfg
MrMind

Verfasst: 27.11.2004 18:22
von Blutgerinsel
MrMind hat geschrieben: genau und zwar erst ne UID erstellen:

Dann die Funktion aufrufen die alle BBcodes mit der UID versieht und dann in die DB sichern + der UID in ein extra Feld.
Beim ausgeben, die UID wieder an die passende Funktion übergeben.

Beim editieren weiß ich jetzt net wie das abläuft, aber in meiner BBCode Klasse die ich anhand des wissens von der phpBB bbcode.php angelegt hatte, habe ich ne extra Funktion, die diese UID wieder aus den BBCodes entnimmt, damit dem User nichts auffällt etc.

Und beim editieren wird ne neue UID genommen, sonst besteht ein Sicherheitsrisiko.

Mfg
MrMind
So steht ja auch in dem Knowledge Beitrag ungefähr drinnen....
Hab mich erstmals auch gefragt wozu das Ganze....

Verfasst: 28.11.2004 19:30
von Dave
Dann liegt es wohl mien Problem auch daran das ich nix beim einfügen mache :D
Ich werde mich dann mal später daran begeben.

Weiß einer die genaue funktion dafür?


MfG
Dave

Verfasst: 29.11.2004 19:54
von Dave
Also eintragen ist nun kein problem mehr das klappt :D

Was mich noch interessieren würde ob es möglich bestimmte bbcodes zu verbieten.

Code: Alles auswählen

 oder [list ] brauche ich nicht.


MfG
Dave

Verfasst: 29.11.2004 21:41
von Blutgerinsel
Dave hat geschrieben:Also eintragen ist nun kein problem mehr das klappt :D

Was mich noch interessieren würde ob es möglich bestimmte bbcodes zu verbieten.

Code: Alles auswählen

 oder [list ] brauche ich nicht.


MfG
Dave[/quote]

Definiere mal verbieten:
[ ] Nicht umwandeln
[ ] Error produzieren "Hr. User diese Funktion wurde deaktiviert"
[ ] Stillschweigend entfernen

BTW: Es ist alles möglich was verbieten anbelangt  :D