Seite 1 von 1

News post Mod (Probleme beim programmieren)

Verfasst: 23.10.2003 11:30
von TheSunToucher
Hi phpBB-Community!

Ich wollte mir einen kleinen Mod schrieben, nix wildes nur eine PHP-Seite, die die Beiträge eines bestimmten Topics als News (auf zB meiner Startseite) ausgibt. Auf das Topic hab nur ich mir Zugriff gegeben und könnte dann so, unkompliziert News posten...

Jetzt mein Problem:
Ich greife selbst auf meine DB zu und hol mir die Daten aus "phpBB_posts" und "phpBB_posts_text" diese lass ich mir auf der Seite ausgeben, das funktioniert auch ohne Probleme.
Jetzt muß ich den Text allerdings noch formatieren, also den bbCode auflösen usw. dazu wollte ich natürlich die phpBB-Funktionen nutzen!

Welche Datein muss ich includen?
Wie verhindere ich, das php denk "Hacking attempt"
Soll ich vieleicht nicht selbst eine Connection zur DB auf machen, sondern
dazu auch irgendeine Methode von phpBB nutzen?


Vielen Dank für eure Tipps
TheSunToucher

Re: News post Mod (Probleme beim programmieren)

Verfasst: 23.10.2003 11:45
von PhilippK
TheSunToucher hat geschrieben:1. Welche Datein muss ich includen?
2. Wie verhindere ich, das php denk "Hacking attempt"
3. Soll ich vieleicht nicht selbst eine Connection zur DB auf machen, sondern
dazu auch irgendeine Methode von phpBB nutzen?
Fangen wir von hinten an:
3.: von phpBB gibt's da eine entsprechende Routinensammlung. Siehe dazu http://www.phpbb.com/phpBB/viewtopic.php?t=137321 (in Englisch)
2.:

Code: Alles auswählen

define('IN_PHPBB', true);
1.: müsste ich nachschauen.

Gruß, Philipp

Verfasst: 23.10.2003 12:07
von PhilippK
So, nun zu 1.:
schau mal in die viewtopic.php:

Code: Alles auswählen

include($phpbb_root_path . 'includes/bbcode.'.$phpEx);

Code: Alles auswählen

	$message = $postrow[$i]['post_text'];
Die Variable $message wird dann noch etwas weiterverarbeitet, u.a. durch die Funktion bbencode_second_pass(). Schau's dir am besten selbst mal an :-)

Gruß, Philipp

Re: News post Mod (Probleme beim programmieren)

Verfasst: 23.10.2003 12:11
von TheSunToucher
PhilippK hat geschrieben: von phpBB gibt's da eine entsprechende Routinensammlung. Siehe dazu http://www.phpbb.com/phpBB/viewtopic.php?t=137321 (in Englisch)
Aha! cool, das hilft mir schonmal weiter, danke!

Gut, dann hab ich den Datenbankzugriff jetzt in "schön", aber den BBCode will er mir immernoch nicht encoden.

Ich bekomme die Fehlermeldung "Fatal error: Call to a member function on a non-object..."
wenn ich die Funktion "$msg = bbencode_second_pass($msg, $bbcode_uid);" aufrufe.
Wozu ist den diese "bbcode_uid" die selektiere ich aus "posts_text", aber wozu die ist weiß ich nicht :-\

Verfasst: 23.10.2003 12:20
von PhilippK
Die bbcode_uid dient vor allem der Sicherheit und der sicheren Identifikation der BBCode-Tags.

Gruß, Philipp

Verfasst: 23.10.2003 12:52
von TheSunToucher
So, hab das Problem gefunden, es müssen auch die userdaten initalisiert werden, also so:

Code: Alles auswählen

// Start session management 
$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata);
oder wenn man die nicht braucht, muss man wenigstens die bbcode-templatefile mit angeben:

Code: Alles auswählen

$template_path = 'templates/' ; 
$template_name = 'subTrail' ; 

$template = new Template($phpbb_root_path . $template_path . $template_name);
Der Anfang der Page muss dann ungefähr so aussehen:

Code: Alles auswählen

<?php
	define('IN_PHPBB', true);
	
	$phpbb_root_path = "./phpBB/";
	
	include($phpbb_root_path . 'extension.inc');
	include($phpbb_root_path . 'common.'.$phpEx);
	include($phpbb_root_path . 'includes/bbcode.'.$phpEx);
	
	$sql = "SELECT * FROM blabla;";
	$result = $db->sql_query($sql);
	if ( !$result ){ 
		message_die(GENERAL_ERROR, 'Error retrieving data', '', __LINE__, __FILE__, $sql); 
	}
	
	
	$userdata = session_pagestart($user_ip, PAGE_INDEX); 
	init_userprefs($userdata);
	
?>
dann kann man bei der Ausgabe der Daten auch die funktion benutzen:

Code: Alles auswählen

while( $row = $db->sql_fetchrow($result) ){
	
		$msg = 		$row['post_text'];
		$bbcode_uid = 	$row['bbcode_uid'];
		$msg = 		bbencode_second_pass($msg, $bbcode_uid);
...
Vieleicht hilft's ja irgendwem...