Seite 2 von 2

Verfasst: 16.12.2003 17:00
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

Verfasst: 16.12.2003 17:18
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

Verfasst: 16.12.2003 21:20
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:

Verfasst: 16.12.2003 21:37
von hibbert
das wäre sehr nett :grin:

hibbert

Verfasst: 17.12.2003 10:27
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!";
}
?>

Verfasst: 17.12.2003 15:37
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