ERLEDIGT
NEIN
NEIN
ANTWORTEN
26
26
ZUGRIFFE
1677
1677
EMPFEHLEN
-
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:
Es werden die Sessionvariablen nicht korrekt erstell.PHP-Code: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");
}
Ich habe mal die Negation
in der checkuser.php
herausgenommen. Dann werde ich korrekt zur intern.php umgeleitet. Aber dort fehlen dann die Angaben als welcher Benutzer ich angemeldet bin.PHP-Code:if (!isset ($_SESSION["user_id"]))
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
-
02.08.10 07:40 #2
- Registriert seit
- Apr 2009
- Ort
- Düsseldorf (NRW)
- Beiträge
- 508
Hmm.. buntes Rätselraten.
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...
-
02.08.10 09:33 #4
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.520
Fangen wir mal langsam an: Was passiert, wenn du diese Zeile
Code :1
header ("Location: intern.php");
durch diese
Code :1 2 3
echo "<pre>"; var_dump($_SESSION); echo "</pre>";
in der login.php ersetzt?Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
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
-
02.08.10 18:44 #6
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.520
Kannst du mal in jeden Script (an den Anfang folgende Zeilen einfügen):
Code php:1 2
error_reporting(E_ALL); ini_set("display_errors", 1);
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
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:
Erhalte dann in der intern.php:Code :1 2 3 4 5 6 7 8 9 10 11
<?php error_reporting(E_ALL); ini_set("display_errors", 1); session_start (); if (!isset ($_SESSION["user_id"])) { echo "<pre>"; var_dump($_SESSION); echo "</pre>"; } ?>
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.
-
02.08.10 19:47 #9
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.520
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:
Code php:1
echo ini_get("session.save_path");
Existiert der Ordner, der da raus kommt, bei dir?Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
An weicher Stelle soll ich den Code einfügen...bekomme nirgends eine Ausgabe...
Cookies etc. sind aktiviert.Geändert von testy (02.08.10 um 20:09 Uhr)
-
02.08.10 20:12 #11
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.520
Ok, einen Versuch damit noch, dann musst du die php.ini anpassen:
Code php:1
echo session_save_path();
Am besten in formular.php.
Wenn das auch nichts anzeigt, dann bearbeite deine php.ini (normalerweise liegt die irgendwo im xampp-Verzeichnis, wenn du das verwendest). Geh ans Ende der Datei und schreib rein
Code :1
session.save_path="c:\windows\temp"
Oder einen anderen Ordner, der als temporärer Ordner dienen kann. Dann startest du den Apache-Dienst neu.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Ok. Bekomme als Ausgabe : /var/lib/php5
-
02.08.10 20:37 #13
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.520
Und? Hast du Linux? Wenn ja existiert der Ordner? Wenn nein, siehe meine Beschreibung weiter oben.
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Ich dokumentiere mal meine Umgebung:
Also ich lade die php-Dateien auf einen Server via FTP (mein webspace) hoch.
Dort habe ich php und MySql-DB zur Verfügung. Betreibe php und andere DB ohne Probleme. Nur eben mit dem Login will es nicht klappen.
Das Formular rufe ich dann ganz normal über die URL auf.
Also ich habe nix lokal auf meinen Rechner installiert, sondern rufe alles von dem Server ab.
Ich weiß deshalb nicht genau, wie ich kontrollieren kann ob der Ordner auf dem Server vorhanden ist. Per ftp sehe ich ihn nicht...
-
02.08.10 20:49 #15
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.520
Ok, dann gehen wir mal davon aus, das der Server tadellos funktioniert. Dann probieren wir mal das hier:
Schreibe in jedes Script (außer in checkuser.php) mal diese Zeile NACH dem session_start():
Code php:1
echo session_id();
Edit:
Und dann natürlich alles mal durch testen. Die Session-ID darf sich eigentlich nie ändern.Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
Ähnliche Themen
-
MySQL Login-System mit Sessions (persönlicher Bereich
Von lesterlong im Forum PHPAntworten: 8Letzter Beitrag: 15.12.11, 13:45 -
[PHP/mySQL] Login-System mit Sessions
Von xytrax im Forum PHPAntworten: 4Letzter Beitrag: 03.05.07, 22:34 -
MySQL Login-System mit Sessions (persönlicher Bereich)
Von lesterlong im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 26.07.05, 13:34 -
Frage zu [PHP/mySQL] Login-System mit Sessions
Von EchseKiuta im Forum PHPAntworten: 9Letzter Beitrag: 01.09.04, 17:41





Zitieren

Login






[PHP][Snippet] Array zu XML konvertieren