Hi, liebe Forenten!
Ich habe ein kleines Verständnisproblem mit PHP-Session's. Kurz der Ablauf:
In "index.php" existiert im Wesentlichen nur ein HTML-Formular zwecks Eingabe von User und Passwort, aufgerufen wird bei submit die Datei "index2.php".
In "index2.php" passiert folgendes (Auszug aus dem Quelltext):
<?php
include("mysqldb.php"); // PHP-Klasse für MySQL-Datenbank
include("session.php");
// User und Kennwort in der Session registrieren
session_register("user");
session_register("passwort");
if ($user=="webma"):
header("Location: webma.php"); //wenn als webma angemeldet -> webma.php aufrufen!
exit;
endif;
if ($user=="admin"):
header("Location: admin.php"); //wenn als admin angemeldet -> admin.php aufrufen!
exit;
endif;
?>
<html>
[...]
</html>
In der Datei "session.php" wird die session gestartet und die Zugangsdaten werden geprüft (Quelltext):
<?php
session_start();
$db->query("SELECT name,vname FROM tbl_mitarbeiter WHERE user='$user' and passwort=PASSWORD('$passwort')");
if (!list($name,$vname) = $db->data()):
header("Location: logout.php"); //wenn nicht in DB, dann zurück zur anmeldung
exit;
endif;
?>
Die Dateien "webma.php" und "admin.php" sind von der Logik identisch, es werden nur die Daten von unterschiedlichen MySQL-Tabellen angezeigt. Nachfolgend ein Auszug aus dem Quelltext (in diesem Fall admin.php):
<?php
session_start();
if ($user!="admin"):
header("Location: logout.php"); //logout.php zerstört die session mit session_destroy(); und ruft danach index.php auf
exit;
endif;
include("mysqldb.php");
?>
<html>
[...]
</html>
Nach dem session_start(); prüfe ich, ob die Seite vom User "admin" aufgerufen worden ist - wenn nicht, geht es zur Anmeldung retour (für den Fall, dass jemand diese Seite aufruft, ohne über die Anmeldung zu gehen). Im HTML-Teil befindet sich eine Menü-Leiste, die verschiedene .php-Dateien aufruft - und das Auslesen einer MySQL-Tabelle mit Anzeige der Daten (als Formular), was zum Ändern von Daten dient. Der Aufruf vom Menü her erfolgt ganz normal mit "
....". Die jeweils aufgerufenen Seiten beginnen exakt so wie die "webma.php" bzw. "admin.php".
Mein Unverständnis: im Falle von "admin.php" funktioniert alles bestens. Wenn ich im Menü eine Seite aufrufe, dann bekomme ich die Seite angezeigt, da scheinbar durch die Session die Informationen "user" und "passwort" transportiert werden; auch im Falle dessen, dass ich ein Formular abschicke. Seltsamerweise ist es bei "webma.php" definitiv NICHT der Fall - soll heißen, dass in $user einen Leerstring enthält. Warum das dort anders ist, weiß ich nicht....
Vermutlich kommt es daher, dass mir generell das Verständnis fehlt, wie eine Session mit der Sitzung zusammen hängt. Mir ist absolut nicht klar, wie PHP dies löst, daher tu ich mir mit der Fehlersuche recht schwer. Vielleicht kann mir jemand Klarheit verschaffen....?
Many Thanks!
