TheRealSpeedster
Mitglied
Hallo,
also ich versuche gerade ein eigenes Forum für unsere Clan-Site zu basteln. Und hab da ein großes Problem bei einer Datenbankabfrage.
Und zwar versuche ich die Rechte des Users der gerade eingeloggt ist abzufragen.
Mit diesem Script:
Kurze erklärung dazu:
Wenn sich jemand einloggt wird die ihm zugeteilte Forumgruppen - id ausgelesen und in einer SESSION gespeichert. Und hier dann wiederum in einer Variable gespeichert ($group). Das funtzt auch einwandfrei.
Wenn der jenige nicht eingeloggt ist bekommt die Variable $group den Wert 5. Weil das die Gruppe ist für die Gäste im Forum. Das funtzt soweit auch.
Nun werden mit hilfe dieser Variable die Rechte aus der DB abgefragt. Sollte soweit eigentlich auch funktionieren.
Das ganze steht in einer extra php Datei (forum_rechte.php). Weil ich die abfrage häufiger brauch. Nun include ich diese Datei in meine forum_showposts.php. Dort brauch ich diese Abfrage um fest zu legen ob der Link zum editieren eines Posts angezeigt werden soll oder nicht.
Hier mal das Script für die forum_showposts.php:
So nun das eigentliche Problem.
Wenn ich mich eingeloggt hab und mich halt bis zur forum_showposts.php duchgeklickt hab, zeigt er mir den Link zum editieren auch an. So wie es auch sein soll. Aber sowie ich dann auf "Seite aktualisieren" klicke oder kurz auf einen anderen Link innerhalb der Site klicke und dann wieder auf die Showposts klicke, ist der Link weg.
Um den Fehler einzugrenzen habe ich mir schon mit echo die SESSION daten ausgeben lassen und das Ergebnis der DB-Abfrage. Die SESSION daten werden auch immer ausgegeben und sind somit wären der ganzen Zeit vorhanden. Aber die Ergebnisse aus der DB-Abfrage verschwinden beim Seite aktualisieren. Sprich die Abfrage wird nich noch einmal durchgeführt. Alle anderen Abfragen in der forum_showposts.php werden korrekt ausgeführt. Nur halt diese in der forum_rechte.php nicht. Ich hatte auch schon zum testen die Rechte-Abfrage mit in die forum_showpost.php rein geschrieben. Aber es funktionierte trotzdem nicht. Ich sitze an dem Problem nun schon seit 2 Tagen und finde den Fehler nicht. Ich hoffe jemand von euch kann mir helfen.
Danke schon mal im Voraus!
Gruß
Speedster
also ich versuche gerade ein eigenes Forum für unsere Clan-Site zu basteln. Und hab da ein großes Problem bei einer Datenbankabfrage.
Und zwar versuche ich die Rechte des Users der gerade eingeloggt ist abzufragen.
Mit diesem Script:
PHP:
if (!empty ($_SESSION['user_id'])) {
$group = $_SESSION['forum_group']; }
else {
$group = 5;
}
//Rechte aus DB abfragen
$rechteabfrage = "SELECT * FROM board_groups where groupid = '".$group."'";
$rechteergebnis = mysql_query($rechteabfrage);
$rechte = mysql_fetch_array($rechteergebnis);
Kurze erklärung dazu:
Wenn sich jemand einloggt wird die ihm zugeteilte Forumgruppen - id ausgelesen und in einer SESSION gespeichert. Und hier dann wiederum in einer Variable gespeichert ($group). Das funtzt auch einwandfrei.
Wenn der jenige nicht eingeloggt ist bekommt die Variable $group den Wert 5. Weil das die Gruppe ist für die Gäste im Forum. Das funtzt soweit auch.
Nun werden mit hilfe dieser Variable die Rechte aus der DB abgefragt. Sollte soweit eigentlich auch funktionieren.
Das ganze steht in einer extra php Datei (forum_rechte.php). Weil ich die abfrage häufiger brauch. Nun include ich diese Datei in meine forum_showposts.php. Dort brauch ich diese Abfrage um fest zu legen ob der Link zum editieren eines Posts angezeigt werden soll oder nicht.
Hier mal das Script für die forum_showposts.php:
PHP:
<?php
include ("./includes/connectdb.php");
include ("./includes/checkuser.php");
include ("./includes/forum_rechte.php");
$fid = $_GET['fid'];
$tid = $_GET['tid'];
include ("./includes/tpl/forum_showposts2.tpl");
$abfrage1 = "SELECT * FROM board_answers WHERE fid='".$_GET['fid']."' AND tid='".$_GET['tid']."'";
$ergebnis1 = mysql_query($abfrage1);
$anzahl_posts = mysql_num_rows($ergebnis1);
if (!empty($_SESSION['user_id'])) {
$abfrage2 = "SELECT * FROM benutzerdaten WHERE id='".$_SESSION["user_id"]."'";
$ergebnis2 = mysql_query($abfrage2);
$max = mysql_fetch_array($ergebnis2);
$maxposts = $max['forum_max_posts'];
}
else {
$maxposts = 10;
}
$postseiten = ceil($anzahl_posts / $maxposts); //Seitenanzahl ermitteln
$poststart = $_GET['page'] - 1;
$poststart2 = $poststart * $maxposts;
$abfrage3 = "SELECT * FROM board_answers WHERE fid='".$_GET['fid']."' AND tid='".$_GET['tid']."' LIMIT ".$poststart2.", ".$maxposts."";
$ergebnis3 = mysql_query($abfrage3);
while($row = mysql_fetch_object($ergebnis3)) {
$text = nl2br($row["text"]); //Zeilenumbrüche nicht vergessen ;)
$created = substr($row->created, 8, 2) . "." . substr($row->created, 5, 2) . "." . substr($row->created, 0, 4).', '. substr($row->created, 10, 6);
if (!empty ($row->userid)) {
$abfrage4 = "SELECT * FROM benutzerdaten WHERE id='".$row->userid."' ";
$ergebnis4 = mysql_query($abfrage4);
$autor = mysql_fetch_array($ergebnis4);
$abfrage5 = "SELECT * FROM board_groups WHERE groupid='".$autor['forum_group_id']."' ";
$ergebnis5 = mysql_query($abfrage5);
$forum_group = mysql_fetch_array($ergebnis5);
$abfrage6 = "SELECT * FROM board_avatare WHERE avatarid='".$autor['forum_avatar_id']."' AND userid='".$autor['id']."' ";
$ergebnis6 = mysql_query($abfrage6);
$avatar = mysql_fetch_array($ergebnis6);
$user = $autor['Nickname'];
$userid = $autor['id'];
if (!empty ($row->titel)) { $titel = 'Titel: '.$row->titel.''; }
else { $titel =""; }
if ($rechte['editallpost'] == 1) {
$edit = '<a class="nav2" href="index.php?site=forum_editpost.php&action=editpost&fid='.$fid.'&tid='.$tid.'&aid='.$row->id.'" title="edit">edit</a>'; }
if ($userid == $_SESSION["user_id"] and $rechte['editownpost'] == 1) {
$edit = '<a class="nav2" href="index.php?site=forum_editpost.php&action=editpost&fid='.$fid.'&tid='.$tid.'&aid='.$row->id.'" title="edit">edit</a>'; }
$status = $forum_group['titel'];
$useravatar = '<img src="./upload/boardavatare/avatar-'.$avatar['avatarid'].'.'.$avatar['avatarextension'].'" width="'.$avatar['width'].'px" height="'.$avatar['height'].'px" />';
$beiträge = '<br /><br /><h3>Beiträge: '.$autor['forum_posts'].'</h3><br />';
$signatur = '<p align="left">'.$autor['forum_signatur'].'</p>';
if (!empty($autor['www'])) {
$www = '<a class="nav2" href="http://'.$autor['www'].'" target="_blank" title="www">www</a>';
}
$icq = '<a class="nav2" href="http://wwp.icq.com/scripts/search.dll?to='.$autor['ICQ'].'" target="_blank" title="ICQ">ICQ</a>';
if ($autor['Mailan'] == 1) {
$mail = '<a class="nav2" href="mailto:'.$autor['Mail'].'" title="e-mail">e-mail</a>';}
}
else {
$user = $row->gastname;
$status = "Gast";
$useravatar = "<br />";
$beiträge = "<br />";
$signatur = "";
$www = "";
$icq = "";
$mail = "";
}
include ("./includes/tpl/forum_showposts.tpl");
}
include ("./includes/tpl/forum_showposts3.tpl");
?>
So nun das eigentliche Problem.
Wenn ich mich eingeloggt hab und mich halt bis zur forum_showposts.php duchgeklickt hab, zeigt er mir den Link zum editieren auch an. So wie es auch sein soll. Aber sowie ich dann auf "Seite aktualisieren" klicke oder kurz auf einen anderen Link innerhalb der Site klicke und dann wieder auf die Showposts klicke, ist der Link weg.
Um den Fehler einzugrenzen habe ich mir schon mit echo die SESSION daten ausgeben lassen und das Ergebnis der DB-Abfrage. Die SESSION daten werden auch immer ausgegeben und sind somit wären der ganzen Zeit vorhanden. Aber die Ergebnisse aus der DB-Abfrage verschwinden beim Seite aktualisieren. Sprich die Abfrage wird nich noch einmal durchgeführt. Alle anderen Abfragen in der forum_showposts.php werden korrekt ausgeführt. Nur halt diese in der forum_rechte.php nicht. Ich hatte auch schon zum testen die Rechte-Abfrage mit in die forum_showpost.php rein geschrieben. Aber es funktionierte trotzdem nicht. Ich sitze an dem Problem nun schon seit 2 Tagen und finde den Fehler nicht. Ich hoffe jemand von euch kann mir helfen.
Danke schon mal im Voraus!
Gruß
Speedster