tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
26
ZUGRIFFE
1677
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    testy testy ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    14
    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-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"); 

    Es werden die Sessionvariablen nicht korrekt erstell.
    Ich habe mal die Negation in der checkuser.php
    PHP-Code:
    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
     

  2. #2
    Tim Bureck Tim Bureck ist offline Mitglied Platin
    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.
     

  3. #3
    testy testy ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    14
    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...
     

  4. #4
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    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 ;-)

  5. #5
    testy testy ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    14
    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
     

  6. #6
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    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 ;-)

  7. #7
    testy testy ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    14
    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...
     

  8. #8
    testy testy ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    14
    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 :
    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>";
    } 
    ?>
    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.
     

  9. #9
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    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 ;-)

  10. #10
    testy testy ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    14
    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)
     

  11. #11
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    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:

    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 ;-)

  12. #12
    testy testy ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    14
    Ok. Bekomme als Ausgabe : /var/lib/php5
     

  13. #13
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    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 ;-)

  14. #14
    testy testy ist offline Mitglied
    Registriert seit
    Jul 2007
    Beiträge
    14
    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...
     

  15. #15
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    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

  1. Antworten: 8
    Letzter Beitrag: 15.12.11, 13:45
  2. [PHP/mySQL] Login-System mit Sessions
    Von xytrax im Forum PHP
    Antworten: 4
    Letzter Beitrag: 03.05.07, 22:34
  3. MySQL Login-System mit Sessions (persönlicher Bereich)
    Von lesterlong im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 26.07.05, 13:34
  4. Antworten: 9
    Letzter Beitrag: 01.09.04, 17:41