bbCode auserhalb des Forums...

Probleme bei der regulären Arbeiten mit phpBB, Fragen zu Vorgehensweisen oder Funktionsweise sowie sonstige Fragen zu phpBB im Allgemeinen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.1, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
hibbert
Mitglied
Beiträge: 158
Registriert: 27.10.2002 15:50
Kontaktdaten:

Beitrag von hibbert »

:-? funzt trotzdem net. Ich poste dir mal meinen Kompletten quelltext:

Code: Alles auswählen

<?
// Verbindung zur Datenbank herstellen
mysql_connect("localhost","xxxxxxxxx","xxxxxx");
mysql_select_db("xxxxxxxxxxxxxx");
// ###########################################
// #  die aktuellen Userdaten herausfinden   #
// ###########################################
define('IN_PHPBB', true); 
$phpbb_root_path = '../forum/'; 
include($phpbb_root_path . 'extension.inc'); 
include($phpbb_root_path . 'common.'.$phpEx); 
// Daten in array eintragen
$userdata = session_pagestart($user_ip, PAGE_INDEX); 
init_userprefs($userdata); 
// den aktuellen Usernamen heruafinden
$username=$userdata['username'];
// die ID zu diesem Benutzernamen heruasfinden
$sql = "SELECT user_id FROM phpbb_users WHERE username = '$username'"; 
$query = mysql_query($sql);
$zeileholen = mysql_fetch_array($query);
$user_id=$zeileholen["user_id"];

// #################################
// # Info's zur Nachricht auslesen #
// #################################
$sql = "SELECT privmsgs_to_userid  FROM phpbb_privmsgs WHERE privmsgs_id = '$id'"; 
$query = mysql_query($sql);
$zeileholen = mysql_fetch_array($query);
$allowed_id=$zeileholen["privmsgs_to_userid"];

// ################################
// #  Vergleichen der beiden ID's #
// ################################
if ($user_id !== $allowed_id) {
echo "<b>Fehler 805</b><br>
Du hast nicht die Berechtigung, diese Nachrichtz zu lesen.";
exit;
}
include ("../forum/includes/bbcode.php"); 

// Nachricht empfangen bzw. anzeigen.
$sql = "SELECT privmsgs_id, privmsgs_enable_bbcode, privmsgs_enable_html, privmsgs_enable_smilies, privmsgs_text_id, privmsgs_text, privmsgs_bbcode_uid FROM phpbb_privmsgs, phpbb_privmsgs_text WHERE privmsgs_text_id = privmsgs_id AND privmsgs_id = '$id'";
$query = mysql_query($sql);
$zeileholen = mysql_fetch_array($query);
$message=$zeileholen["privmsgs_text"];
$message_bbcode = $zeileholen['privmsgs_bbcode_uid'];

//#########################################################################################################
if( $zeilenholen['privmsgs_enable_html'] ) 
{ 
   $message = preg_replace('#(<)([\/]?.*?)(>)#is', "<\\2>", $message); 
} 

if( $message_bbcode_uid != '' ) 
{ 
   $message = bbencode_second_pass($message, $message_bbcode); 
} 

$message = make_clickable($message); 

$orig_word = array(); 
$replacement_word = array(); 
obtain_word_list($orig_word, $replacement_word); 
if( count($orig_word) ) 
{ 
   $message = preg_replace($orig_word, $replacement_word, $message); 
} 

if( $zeilenholen['privmsgs_enable_smilies'] ) 
{ 
   $message = smilies_pass($message); 
} 

$message = str_replace("\n", '<br />', $message);


$message_bbcode;
echo $message;


?>
Vielleicht habe ich ja auch einen Fehler vorher gemacht, das das net mehr funzt... :lol:

thx hibbert
» Wer nicht fragt bleibt dumm !! «
Benutzeravatar
hibbert
Mitglied
Beiträge: 158
Registriert: 27.10.2002 15:50
Kontaktdaten:

Beitrag von hibbert »

ahhh ich habe ne neue Idee....

ich ziehe mir einfach die datei primsg.php in den entsprechenden Ordner erstellen den ordner templates/subsilbver und änder infach das template.

in der .php-Datei muss ich zwar noch dem pfad anpassen, aber das funzt schon...


aber trotzdem danke für deine Hilfe, nur dadurch bin ich auf diesen gedanken gekommen :grin:

mfg hibbert
» Wer nicht fragt bleibt dumm !! «
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

hmm.. bei der Datei sind einige Sachen falsch bzw. durcheinander gewürfelt.
Wenn es dich interessiert, kann ich dir später im Detail erklären, was anders aussehen müsste. :wink:
Benutzeravatar
hibbert
Mitglied
Beiträge: 158
Registriert: 27.10.2002 15:50
Kontaktdaten:

Beitrag von hibbert »

das wäre sehr nett :grin:

hibbert
» Wer nicht fragt bleibt dumm !! «
Acid
Ehrenadmin
Beiträge: 12195
Registriert: 26.04.2001 02:00
Wohnort: Berlin

Beitrag von Acid »

<?
// Verbindung zur Datenbank herstellen
mysql_connect("localhost","xxxxxxxxx","xxxxxx");
mysql_select_db("xxxxxxxxxxxxxx");
// ###########################################
// # die aktuellen Userdaten herausfinden #
// ###########################################
define('IN_PHPBB', true);
$phpbb_root_path = '../forum/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
Da du die common.php einbindest, muss nicht nochmal extra eine DB-Verbindung hergestellt werden.
// den aktuellen Usernamen heruafinden
$username=$userdata['username'];
// die ID zu diesem Benutzernamen heruasfinden
$sql = "SELECT user_id FROM phpbb_users WHERE username = '$username'";
$query = mysql_query($sql);
$zeileholen = mysql_fetch_array($query);
$user_id=$zeileholen["user_id"];
Nicht notwendig.. kann man mit unterer sql-Anweisung verbinden.
// #################################
// # Info's zur Nachricht auslesen #
// #################################
$sql = "SELECT privmsgs_to_userid FROM phpbb_privmsgs WHERE privmsgs_id = '$id'";
$query = mysql_query($sql);
$zeileholen = mysql_fetch_array($query);
$allowed_id=$zeileholen["privmsgs_to_userid"];
Nicht notwendig.. kann man mit unterer sql-Anweisung verbinden. Abgesehen davon wird $id nirgends deklariert.
// ################################
// # Vergleichen der beiden ID's #
// ################################
if ($user_id !== $allowed_id) {
echo "<b>Fehler 805</b><br>
Du hast nicht die Berechtigung, diese Nachrichtz zu lesen.";
exit;
}
include ("../forum/includes/bbcode.php");
..is damit auch hinfällig. Wenn, dann sollte man beim include auch $phpbb_root_path angeben.. sonst müsste man es mehrmals anpassen, wenn man den Pfad ändert. Und "ungleich" schreibt man != . ;)
$sql = "SELECT privmsgs_id, privmsgs_enable_bbcode, privmsgs_enable_html, privmsgs_enable_smilies, privmsgs_text_id, privmsgs_text, privmsgs_bbcode_uid FROM phpbb_privmsgs, phpbb_privmsgs_text WHERE privmsgs_text_id = privmsgs_id AND privmsgs_id = '$id'";
$query = mysql_query($sql);
$zeileholen = mysql_fetch_array($query);
$message=$zeileholen["privmsgs_text"];
$message_bbcode = $zeileholen['privmsgs_bbcode_uid'];
Auch hier: $id wird nirgends definiert.
$message_bbcode;
echo $message;
Versuch´s ma damit. Code ein wenig ausgebessert, nur eine sql-Anweisung, in der alles untergebracht ist. Und Code ist phpbb-konform.
Bei privmsgs_type könntest du die verschiedenen PM-Arten angeben (5 wäre ungelesene Beiträge; s. DB-Beschreibung für Erklärung).

Code: Alles auswählen

<?
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);
include($phpbb_root_path . 'includes/bbcode.'.$phpEx);

$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);

$sql = "SELECT privmsgs_id, privmsgs_enable_bbcode, privmsgs_enable_html, privmsgs_enable_smilies, privmsgs_subject, privmsgs_text_id, privmsgs_text, privmsgs_bbcode_uid
          FROM ". PRIVMSGS_TABLE .", ". PRIVMSGS_TEXT_TABLE ." WHERE privmsgs_text_id = privmsgs_id AND privmsgs_to_userid = ". $userdata['user_id'] ." AND privmsgs_type = '5'";
if ( !($result = $db->sql_query($sql)) )
{
        message_die(GENERAL_ERROR, 'Couldn´t find obtain PM info.', '', __LINE__, __FILE__, $sql);
}
if( $row = $db->sql_fetchrow($result) )
{
	$message = $row['privmsgs_text'];
	$subject = $row['privmsgs_subject'];
	$message_bbcode = $row['privmsgs_bbcode_uid'];

	if( !$board_config['allow_html'] )
	{
		if( $row['privmsgs_enable_html'] )
		{
			$message = preg_replace('#(<)([\/]?.*?)(>)#is', "<\\2>", $message);
		}
	}

	if( $board_config['allow_bbcode'] )
	{
		if( $message_bbcode != '' )
		{
			$message = ( $board_config['allow_bbcode'] ) ? bbencode_second_pass($message, $message_bbcode) : preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message);
		}
	}

	if( $board_config['allow_smilies'] )
	{
		if( $row['privmsgs_enable_smilies'] )
		{
			$message = smilies_pass($message);
		}
	}
	$message = make_clickable($message);
	$message = str_replace("\n", "\n<br />\n", $message);

	echo $subject."<br />";
	echo $message;
}
else
{
	echo "Keine PM vorhanden!";
}
?>
Benutzeravatar
hibbert
Mitglied
Beiträge: 158
Registriert: 27.10.2002 15:50
Kontaktdaten:

Beitrag von hibbert »

moment,
den code den ich gepostet habe, der ließt die nachricht nur aus.

die Ver $id wird per link übergeben.

z.B: http://www.hibbert.de/pm/read.php?id=3

dieser Link befindet sich auf der Seite Posteingang. Nur wenn ei User aus dem Forum im Fprum eingeloggt ist, kann er private Nachrichten lesen.

Und die überprüfung, ob die ID's gleich sind, ist dazu gut, dass man nicht die url eingibt und einfach nur die id ändern kann, um nachrichten von anderen usern zu lesen :wink:

aber ich werde mir mal deinen quelltext anschauen und guckten ob der so funzt, wie ich mir das vorgestellt habe.

aber ich probiere ihn auf jeden fall aus... :)

danke für deine mühe, wenn es probleme gibt melde ich mich nochmal...

thx hibbert
» Wer nicht fragt bleibt dumm !! «
Antworten

Zurück zu „phpBB 2.0: Administration, Benutzung und Betrieb“