onion
Grünschnabel
ungewollte änderung registrierter SESSION-Daten
Hallo zusammen!
ich habe eine Frage zu Sessions:
Beim Login wird geschaut, ob die Mitglieder vorhanden und ob das Passwort stimmt.
Hier Login-Auszug:
Dabei wird der Zugriffszähler um eins erhöht.
Das funktioniert noch. Beim Blick in die Session-Daten passen alle Einträge zum eingeloggten User.
Da kann ich dann auf bestimmten NICHT auf allen Seiten wechseln, ohne dass sih daten ändern. Aber beim klick auf diese Datei, ändern sich die Inhalte meiner Session also meiner §_SESSION("u_name") zum Beispiel
Ein Blick in die Session-Logs (hier lokaler Win-Server, gelesen mit Editor) zeigt mir, dass sich nach dem Aufruf dieses Skriptes die Session-Daten plötzlich geändert haben. Sie nehmen dann die Werte des letzten eingetragenen Users an, was so natürlich nicht sein soll.
In dem includeten footer werden die Daten dann auf jeder Seite angezeigt, sofern man eingeloggt ist. Doch diese Anzeige hat sich dann nachdem Klick auf die 2. Datei geändert.
Dann dachte ich, es liegt an Windows, doch nach dem Testen auf dem Liveserver von 1und1, gab es das gleiche zu beobachten.
Kann jemand mir einen Hinweis geben, was ich ändern müsste, dass sich die Session-Daten nicht ändern. Da ich in Sessions noch nicht so der Crack bin, hoffe ich hier jemanden zu finden, der sich damit auskennt ;-)
Ausserdem hab ich auch schon viel Zeug auf der Suche nach meinem Problem gelesen. Doch anhand dessen konnte ich bei mir keine Fehler feststellen.
Viele Grüße
Rainer
Hallo zusammen!
ich habe eine Frage zu Sessions:
Beim Login wird geschaut, ob die Mitglieder vorhanden und ob das Passwort stimmt.
Hier Login-Auszug:
PHP:
if (!session_is_registered("u_name")) {
$user_dat = "login/user.txt";
$lines = file("$user_dat");
$multi = array();
foreach ($lines as $line) {
$line = trim($line);
list($u_2id, $u_2name, $u_2pass, $u_2email, $u_2right, $u_2entry, $u_2logins, $u_2points) = explode("|", $line);
$multi[0][] = $u_2id;
$multi[1][] = $u_2name;
$multi[2][] = $u_2pass;
$multi[3][] = $u_2email;
$multi[4][] = $u_2right;
$multi[5][] = $u_2entry;
$multi[6][] = $u_2logins;
$multi[7][] = $u_2points;
}
for ($i=1; $i<count($multi[0]); $i++) {
if ($u_name_check == $multi[1][$i] && $u_pass_check == $multi[2][$i] && $check == 1) {
$report = "Login erfolgreich<br>";
$report .= "<br>Benutzer: ".$u_name."<br>";
(int) $multi[6][$i] = $multi[6][$i]+1;
session_register("u_id");
$_SESSION["u_id"] = $multi[0][$i];
session_register("u_name");
$_SESSION["u_name"] = $multi[1][$i];
session_register("u_pass");
$_SESSION["u_pass"] = $multi[2][$i];
session_register("u_email");
$_SESSION["u_email"] = $multi[3][$i];
session_register("u_right");
$_SESSION["u_right"] = $multi[4][$i];
session_register("u_entry");
$_SESSION["u_entry"] = $multi[5][$i];
session_register("u_logins");
$_SESSION["u_logins"] = $multi[6][$i];
session_register("u_points");
$_SESSION["u_points"] = $multi[7][$i];
}
}
$fp = fopen("$user_dat","w+");
if ($fp) {
flock($fp,2);
$nl = chr(13) . chr(10);
for ($i=0; $i<count($multi[0]); $i++) {
fputs ($fp, $multi[0][$i]."|".$multi[1][$i]."|".$multi[2][$i]."|".$multi[3][$i]."|".$multi[4][$i]."|".$multi[5][$i]."|".$multi[6][$i]."|".$multi[7][$i].$nl);
}
flock($fp,3);
fclose($fp);
}
}
Das funktioniert noch. Beim Blick in die Session-Daten passen alle Einträge zum eingeloggten User.
Da kann ich dann auf bestimmten NICHT auf allen Seiten wechseln, ohne dass sih daten ändern. Aber beim klick auf diese Datei, ändern sich die Inhalte meiner Session also meiner §_SESSION("u_name") zum Beispiel
PHP:
<?php
ini_set("session.use_cookies","0");
ini_set("session.use_trans_sid","1");
session_start();
include ("top.inc.php");
?>
<td width=420 height=100% valign=topbgcolor=#E7EBF0>
<table width=390 cellSpacing=0 cellPadding=0 border=0 align=center>
<tr>
<td> <br>
</td></tr>
<tr>
<td height=24 align=left valign=middle class=headline background=images/bg_headline.gif> Members</td></tr>
</table>
<table cellSpacing=0 cellPadding=20 border=0 width=100%>
<tr>
<td><img src="images/dot_blueblue.gif" width="10" height="10" border="0" alt=""> <b>Die Member:</b><br>
<br>
<?php
$user_dat = "login/user.txt";
$lines = file("$user_dat");
$multi = array();
foreach ($lines as $line) {
$line = trim($line);
list($u_id, $u_name, $u_pass, $u_email, $u_right, $u_entry, $u_logins, $u_points) = explode("|", $line);
$multi[0][] = $u_id;
$multi[1][] = $u_name;
$multi[2][] = $u_pass;
$multi[3][] = $u_email;
$multi[4][] = $u_right;
$multi[5][] = $u_entry;
$multi[6][] = $u_logins;
$multi[7][] = $u_points;
}
echo "<table>";
#echo " <tr>";
echo " <td class=comment width=20></td>";
echo " <td class=comment width=60></td>";
echo " <td class=comment width=180> </td>";
echo " <td class=comment width=40> </td>";
echo " </tr>";
for ($i=1; $i<count($multi[0]); $i++) {
echo " <tr>";
echo " <td>".$multi[0][$i]."</td>";
echo " <td><b>".$multi[1][$i]."</b></td>";
echo " <td class=comment><a class=comment href=\"".$multi[3][$i]."\">".$multi[3][$i]."</a></td>";
echo " <td class=comment><a class=comment href='#' OnClick=\"javascript: fenster('member_membersmore.php?user=".$multi[0][$i]."','Member',440,310)\">> mehr Infos <</a></td></td></td>";
echo " </tr>";
echo " <tr>";
echo " <td colspan=2> </td>";
echo " <td colspan=2 class=comment>dabei seit: ".$multi[5][$i]."<br>Anzahl der Logins: ".$multi[6][$i]."<br>gesammelte Punkte: ".$multi[7][$i]."<br> </td>";
echo " </tr>";
}
echo "</table>";
?>
<br>
<br>
</td>
</tr>
</table></td>
<?php
include ("footer.inc.php");
?>
In dem includeten footer werden die Daten dann auf jeder Seite angezeigt, sofern man eingeloggt ist. Doch diese Anzeige hat sich dann nachdem Klick auf die 2. Datei geändert.
Dann dachte ich, es liegt an Windows, doch nach dem Testen auf dem Liveserver von 1und1, gab es das gleiche zu beobachten.
Kann jemand mir einen Hinweis geben, was ich ändern müsste, dass sich die Session-Daten nicht ändern. Da ich in Sessions noch nicht so der Crack bin, hoffe ich hier jemanden zu finden, der sich damit auskennt ;-)
Ausserdem hab ich auch schon viel Zeug auf der Suche nach meinem Problem gelesen. Doch anhand dessen konnte ich bei mir keine Fehler feststellen.
Viele Grüße
Rainer
Zuletzt bearbeitet: