[PHP/mySQL] Login-System mit Sessions - Problem

testy

Grünschnabel
Hallo an Alle,

ich möchte gern das Login-System von hier "nachbauen".
Soweit gibt es auch keine Syntax-Fehler. Die Verbindung zur Datenbank und das anlegen der Benutzer klappt auch.
Nun mein komisches Problem. Wenn ich einen Falschen Namen oder Passwort eingebe kommt eine Fehlermeldung, dass die Daten verkehrt sind. Soweit so gut. Wenn ich die korrekten Logindaten eingeben, kommt keine Fehlermeldung, werde aber trotzdem wieder zur formular.php umgeleitet.
Ich vermute stark das der Fehler in der login.php Datei steckt und zwar an der Stelle:
PHP:
if (mysql_num_rows ($result) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array ($result); 

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["Id"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"]; 

  header ("Location: intern.php"); 
}
Es werden die Sessionvariablen nicht korrekt erstell.
Ich habe mal die Negation (!) in der checkuser.php
PHP:
if (!isset ($_SESSION["user_id"]))
herausgenommen. Dann werde ich korrekt zur intern.php umgeleitet. Aber dort fehlen dann die Angaben als welcher Benutzer ich angemeldet bin.
Also mein Problem ist, das das Passwort zwar korrekt abgeglichen werden kann mit der DB aber die Sessionvariablen nicht korrekt geschrieben werden können.
Ansonsten habe ich mich Quelltext mäßig genau an das Tutorial von oben gehalten. Bis auf die DB-Anbindung naürlich. Und diese funktioniert.
Über eure Hilfe wäre ich sehr sehr dankbar...ich weiß nämlich nicht mehr weiter.
Viele Grüße
 
Hmm.. buntes Rätselraten. :D Hast du vielleicht irgendwo session_start() vergessen? Was anderes kann ich mir zur frühen Stunde nicht vorstellen. ;)
 
Guten Morgen :-)

danke für deine prompte Antwort. Aber vergessen habe ich nix, da ich ja alles 1:1 kopiert habe. Ich habe nur die Daten für die Verbindung zur DB anpassen müssen.
Das ist ja irgendwie das komische...
 
Fangen wir mal langsam an: Was passiert, wenn du diese Zeile

Code:
header ("Location: intern.php");

durch diese

Code:
echo "<pre>";
var_dump($_SESSION);
echo "</pre>";

in der login.php ersetzt?
 
Also, das scheint zu funktionieren. Als Ausgabe bekomme ich:
array(4) {
["user_id"]=>
string(1) "1"
["user_nickname"]=>
string(5) "admin"
["user_nachname"]=>
string(5) "admin"
["user_vorname"]=>
string(5) "admin"
}

Dann muss der Fehler noch woanders liegen! Hm....

Testy
 
Kannst du mal in jeden Script (an den Anfang folgende Zeilen einfügen):

PHP:
error_reporting(E_ALL);
ini_set("display_errors", 1);
 
Habe den Code in jede php-Datei eingefügt und es kommt keine Fehlermeldung! Kann es vielleicht noch ein Fehler beim Erstellen der Tabelle in der MySQL-DB sein? Aber es wird ja alles richtig eingetragen und das Array wird ja auch erzeugt bzw. das Passwort wird abgeglichen. Werde eben nur wieder zur formular.php weitergeleitet...vielleicht passt auch etwas in der checkuser.php nicht. Habe sie aber 1:1 aus dem Tutorial übernommen...
Danke für deine Mühe...
 
Ich weis nicht obs was bringt, wollte aber sehen ob die Daten richtig bis zur checkuser.php kommen und habe sie wie folgt umgeschrieben:
Code:
<?php 
error_reporting(E_ALL);
ini_set("display_errors", 1);
session_start (); 
if (!isset ($_SESSION["user_id"])) 
{ 
echo "<pre>";
var_dump($_SESSION);
echo "</pre>";
} 
?>
Erhalte dann in der intern.php:
array(0) {
}

BenutzerId: Notice: Undefined index: user_id in /var/www/.../intern.php on line 11
Nickname: Notice: Undefined index: user_nickname in /var/www/.../intern.php on line 12
Nachname: Notice: Undefined index: user_nachname in /var/www/.../intern.php on line 13
Vorname: Notice: Undefined index: user_vorname in /var/www/.../intern.php on line 14

Sieht so aus, als würden die Daten nicht bis zur checkuser.php übernommen werden.
 
Aber genau das ist das, was eine Session tun sollte. Sie speichert Daten serverseitig. Damit man immer auf die Session zugreifen kann, wird session_start() benötigt.

Den einizigen Zustand, den ich mir vorstellen kann, warum es nicht funktioniert, ist, wenn die Session über Cookie definiert ist und der Browser Cookies nicht akzeptiert. Es wäre rein theoretisch auch möglich, das die Session beim Beenden des Scripts nicht serialisiert werden kann. Das lässt sich einfach so herausfinden:

PHP:
echo ini_get("session.save_path");

Existiert der Ordner, der da raus kommt, bei dir?
 
An weicher Stelle soll ich den Code einfügen...bekomme nirgends eine Ausgabe...
Cookies etc. sind aktiviert.
 
Zuletzt bearbeitet:
Zurück