Hallo,
Ich möchte bei erfolgreichem Einloggen eines Users mit Benutzername und Kennwort diesem eine Session-ID zuteilen, welche in einer MySQL Datenbank abgespeichert wird! Diese Session soll über die Datenbank auf einer anderen PHP-Seite zur Verfügung stehen, da in der Session die Variable "steckt" ob der User Adminfukntionen benutzen darf oder nicht...
ich glaube, Du verwechselst da etwas. Sessions != Benutzermanagement. Mit Sessions kannst Du Variablen über mehrere PHP-Seiten verwenden. Das hat vorerst nichts mit einem Benutzermangement zu tun. Wenn Du die Sessions in einer Datenbank speichern willst, dann hilft Dir http://phpbuilder.com/columns/ying20000602.php3?page=1 sicherlich weiter.
Dann brauchst Du noch ein Benutzermanagement. Das hat aber eigentlich nicht direkt etwas mit Sessions zu tun. Du brauchst erst mal eine Tabelle, die z.B. so aussieht:
+--------------------+----------------+
| Name des Feldes | Typ |
+--------------------+----------------+
| userid | int | <-- primary key, auto_increment
| username | varchar(30) |
| password | varchar(32) |
| sonstige Infos über den Benutzer |
+-------------------------------------+
Das Passwort solltest Du übrigens als MD5-Hash abspeichern.
Dann brauchst Du einen Code, der etwas so funktioniert:
--------------- am Anfang jeder Seite, die nicht login/logout.php ist
<?php
require "session_startup.php"
require "login_check.php"
...
----------------------------------------
--------------- session_startup.php
<?php
// Funktionen zum Initialisieren des Session Managements
// u.a. auch session_start
?>
----------------------------------------
--------------- login_check.php
<?php
if (!isset ($_SESSION["user"])) {
// Weiterleitung auf login.php falls nicht eingeloggt
$uri = "http://" . $_SERVER["HTTP_HOST"] . dirname ($_SERVER["PHP_SELF"]) . "/login.php";
Header ("Location: " . $uri);
exit;
}
?>
----------------------------------------
--------------- login.php
<?php
require "session_startup.php"
// formular wurde abgeschikt
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// benutzernamen und passwort prüfen
if (prüfung war erfolgreich) {
$_SESSION["user"] = ...;// hier kommen die user-infos rein
// entweder eine HTTP-Weiterleitung oder die Anzeige eines
// Begrüßungsbildschirms
exit;
}
// hier nichts hin, denn wenn die prüfung nicht erfolgreich war
// dann soll das formular noch mal angezeigt werden
}
?>
<form ...>
...
</form>
----------------------------------------
--------------- logout.php
<?php
require "session_startup.php"
unset ($_SESSION["user"]);
// entweder wieder eine Weiterleitung (z.B. auf login.php)
// oder eine Anzeige, dass der Logout erfolgreich war
?>
----------------------------------------
Grüße,
Christian