SESSION-Daten werden überschrieben

Shinzo

Mitglied
Hallo,

ich habe mich wieder mal mit Sessions beschäftigt, und habe nun ein Problem!
Ich baue gerade eine kleine Community auf:
http://www.xtremecity.de/alpha/community/index.php

Nun das Problem: Sobald man eingeloggt ist, steht der Status links oben, sagen wir mal "Eingeloggt als Webmaster". Wenn man eingeloggt auf Mitgliederliste und dann einen User auswählt und in dessen Gästebuch schaut ( Zum Beispiel:
guestbook.php?id=48), dann ändert sich der Username in der Session in den Namen, dessen Gästebuch man gerade anschaut. D.h. wenn man als Lusche eingeloggt ist, dann wird der Username in der Session "Webmaster", andere SESSION-Daten bleiben aber gleich.

Hier der Code des Gästebuches:
PHP:
<?
session_save_path("/sessionordner");
session_start();
include("configurationen.php");

if($id==0) {
echo("<b>Fehler:</b> Keine Gästebuch-ID angegeben!");
}
else
{
$proseite=10;
$sql_eintraege = "SELECT * FROM community_guestbook WHERE mem_id = $id";
$result_eintraege = mysql_query($sql_eintraege);
$number = mysql_num_rows($result_eintraege);
$seiten=ceil($number/$proseite);

if (mysql_num_rows ($result_eintraege) < 1)
{
echo("Noch keine Einträge vorhanden!");
}
else
{
echo("<table cellspacing=\"1\" cellpadding=\"0\" bgcolor=\"#C4C7CE\" width=\"480\">");
$start=$_GET['show'] * $proseite;
$sql_guestbook="SELECT id,poster_nick,poster_id,datum,nachricht FROM community_guestbook WHERE mem_id = $id ORDER BY id DESC LIMIT $start,$proseite";
$result_guestbook = mysql_query($sql_guestbook);

$c1 = "D8DBE0"; 
$c2 = "C2C7D0";
$zeile = 0;

$ende = $start + $proseite; 
if ($ende>$number) { $ende = $number; }
$seite_anzeige = $page+1;
$start_anzeige = $start+1;
echo "Seite $seite_anzeige - Einträge von $start_anzeige bis $ende <br /> \n";
echo "Einträge: $number<BR><br>";

while($row_guestbook = mysql_fetch_array($result_guestbook)){ 

$poster_nick = $row_guestbook['poster_nick'];
$datum = $row_guestbook['datum'];
$nachricht = $row_guestbook['nachricht'];

$zeile++;
$bg = ($zeile % 2) ? $c1 : $c2; 

echo "<tr><td bgcolor=\"{$bg}\" height=\"20\" width=\"100%\">&nbsp;<a href=\"details.php?search=$poster_nick\">$poster_nick</a> ($datum) : $nachricht</td></tr>";
}
echo "</table><br>";

echo "<table border=\"0\" width=\"480\" cellspacing=\"0\" cellpadding=\"0\">
  <tr>
    <td width=\"50%\">";
if ($show>0) {
	$i=$show-1;
	echo "<A HREF=\"guestbook.php?id=$id&show=$i\"> Zurück</A>";
}
echo "</td>
    <td width=\"50%\" align=\"right\">";
if ($show+1<$seiten) {
	$i=$show+1;
	echo "<A HREF=\"guestbook.php?id=$id&show=$i\">Weiter</A> ";
}
echo "</td>
  	</tr>
	</table>";
}
?>
<br>
<br>
<form action="add_guestbook.php" method="post" enctype="multipart/form-data">
<input name="datum" type="hidden" value="<? echo date("d.m.Y"); ?>">
<input name="poster_nick" type="hidden" value="<? echo "".$_SESSION['username'].""; ?>">
<input name="mem_id" type="hidden" value="<? echo("$id"); ?>">
<input name="nachricht" type="text">
<input type="submit" name="submit" value="Speichern">
</form><br><br><br>
<?
}
?>
<?
$end_teima = round(microtime() - $start_teima, 5); 
echo "<br><br>Seite wurde gerendert in: ".$end_teima; 
?>

Alles klappt wunderbar, nur dieses Problem. Wenn jemand weiß was es sein sollte, wäre ich soooo dankbar.
Danke im Voraus,
Mfg P.K.
:(
 
a) Du liest den Usernamen in deinem obigen Script ja nur einmal aus dr Session und greifst auch sonst nicht auf die Session zu - sicher, dass es in diesem Script sein muss ?
b) Wo testest du, ob sich der Username in der Session verändert hat ? - z.B. in einem "Eingeloggt als..." auf welcher Seite ?
Hier scheint der Session-Username ja nicht mal sichtbar zu werden.

Versuch doch mal einige Codebausteine herauszunehmen - wenn's dann ohne einen Baustein sauber läuft (bis auf, dass er nicht so viel anzeigt), hast du die Schwachstelle gefunden. :)
 
Zurück