Doch Problem mit login :(

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Doch Problem mit login :(

    Hi!
    Ich habe da ein merkwürdiges Problem mit meinem Loginscript bzw. Formular. Wenn sich jemand einloggen will, werden die Felder gelöscht und man wird nicht eingelogged. Lustigerweise bin ich der Einzige, bei dem es funktioniert. Ich habe es mit mozilla und IE getestet, in beiden fällen gab es - bei mir zumindest - keine Probleme. Könnte es eventuell am header() befehl liegen? Hier mal der quellcode der login.php, die beim Klick auf den Submit Button aufgerufen wird:

    PHP-Code:
    <?php 
    include("config.php");

    // Session starten
    session_start ();

    // Datenbankverbindung aufbauen 
    $connectionid mysql_connect ($dbServer$dbadmin$dbpassword); 
    if (!
    mysql_select_db ($dbDatabase$connectionid)) 

      die (
    "Keine Verbindung zur Datenbank"); 


    $sql "SELECT "
        
    "Id, Nickname, email "
      
    "FROM "
        
    $dbTable
      
    " WHERE "
        
    "(Nickname like '".$_REQUEST["name"]."') AND "
        
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"
    $result mysql_query ($sql); 

    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_email"] = $data["email"]; 

      
    header ("Location: intern.php"); 

    else 

      
    header ("Location: lformular.php?fehler=1"); 


    include(
    "links_tmpl.php")
    ?>
    Alles funktioniert bei den anderen, also Registrieren, neues Kennwort anfordern... nur der Login geht nicht.

  • #2
    Werden die Felder gelöscht oder kommst Du in den Else-Zweig (also ins "Fehler"-Formular).

    Leere Felder würden meiner Meinung nach dafür sprechen, dass der Formularcode nocheinmal
    aufgerufen wird (da ergeben sich im Script aber leider keinerlei Anhaltspunkte, warum das so sein
    könnte).

    Ein Problem mit Header wäre möglich. Gibt config.php irgendwas aus? (vor dem Header darf meines
    Wissens nach keine Ausgabe erfolgen).

    Was sagen die log-dateien (error_log)?

    Kommentar


    • #3
      Nein, seltsamerweise kommt man zum else zweig, wenn man ein falsches Passwort eingibt. Beim richtigen Passwort bleibt man im Formular hängen.

      In der config.php habe ich nur Variablen zuweisungen stehen, also Server Adresse ect. damit ich notfalls alles portieren kann, ansonsten wird kein HTML code generiert.

      Wie kommt man an die logs? Sorry, hab noch nicht so viel Erfahrung mit PHP. ^^

      Kommentar


      • #4
        error_reporting(E_ALL); wirft leider keine Fehler aus, falls du das meintest.

        Kommentar


        • #5
          Nach jedem Header ein exit immer sonst kann es sein, dass folgender Code noch ausgeführt wird.
          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_email"] = $data["email"]; 

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

          else 

            
          header ("Location: lformular.php?fehler=1"); 
            exit;


          include(
          "links_tmpl.php"); //diese Zeile ist mehr als sinnfrei weil hier kommst du nie rein 
          Die kommentierte Zeile wird ziemlich sicher nie ausgeführt, weil du in deinem if/else Konstrukt in jedem Falle einen Header sendest, der den User weiterleiten will.

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Hm, wäre interessant, ob das mit dem exit jetzt funktioniert. Ist auf jeden Fall ein interessanter Einwurf, obwohl das in diesem Fall eigentlich nichts bewirken dürfte.

            Wie Du bei welcher Form zu den error_logs kommst, weiß ich für verschiedene PHP-Installationen leider auch nicht so genau. Falls Du (was der Standardfall sein dürfte) PHP als Apache-Modul laufen hast, sollten die Fehlermeldungen in der log-Datei erscheinen, in die Apache auch sonstige Fehlermeldungen schreibt (im Falle eines Apache2-Servers auf gängigen Linux-Distributionen ist deren Speicherort in der *.conf-datei im vhosts.d Verzeichnis angegeben).

            Kommentar


            • #7
              Hm, wäre interessant, ob das mit dem exit jetzt funktioniert. Ist auf jeden Fall ein interessanter Einwurf, obwohl das in diesem Fall eigentlich nichts bewirken dürfte.
              Kommt schwer drauf an was in der include Datei steht. Wenn die auch nur eine Ausgabe macht, dann könnte ein header() schon in die Hose gehen.

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Hm, danke für den Tipp mit dem exit und das mit dem include war mal wirklich sinnlos. ^^

                Hab alles soweit korrgiert, aber leider hat sich nichts geändert. Was mich an der Sache so verwundert ist, das es Bei mir funktioniert, aber bei leuten die ich Bitte, dass sie sich mal einloggen sollen, ned :/.

                Ich habe sogar mal nen alten Win98 Rechner angeschlossen. Selbst mit dem darauf enthaltenem uralt IE hat es bei mir funktioniert. o_O

                Ich hab ja schon einiges Programmiert und und kriege früher oder später alles gelöst, aber momentan stehe ich richtig auf dem Schlauch

                Kommentar


                • #9
                  Ev absolute Pfade in den Headern (inkl Protokoll also http://www.meine_doamin.de/index.php) ? Ist sauberer und völlig korrekt. Wobei die meisten Browser auch relative Pfade schlucken, aber eben vllt nicht alle.

                  Gruss

                  tobi
                  Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                  [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                  Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                  Kommentar


                  • #10
                    Ich möchte das Script so portabel wie möglich halten. Gibt es eine funktion, mit der man den aktuellen pfad der php erhällt oder sowas? Dann könnte ich den string ja einfach davor hängen.

                    Kommentar


                    • #11
                      Schau mal hier rein. Bin ziemlich sicher, dass du dort was finden wirst.

                      Gruss

                      tobi
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar


                      • #12
                        Ich bin echt am Verzweifeln. Ich hab es jetzt so gemacht, dass wenn ein User sich einlogged, dass dann seine aktuelle SessionID in seine Spalte eingetragen wird. Um zu schauen ob ein User eingelogged ist, vergleiche ich die Aktuelle SessionID des users mit den Werten aus der Datenbank. Derjenige der sie in seiner Spalte hat, wird als eingelogged erkannt.

                        Das ganze funktioniert bei MIR einwandfrei, bei den anderen aber wieder nicht. ((( Die SessionID meines Kumpels steht sogar noch in der Datenbank, allerdings wird er trotzdem auf die Nicht eingelogged seite weitergeleitet. Ich kann mir das absolut nicht erklären, was das eigentlich soll.

                        Ich habe jetzt herausgefunden, dass aus irgendeinem Grund eine andere SessionID in die Datenbank eingetragen wird, als mein Kumpel tatsächlich hat. Kann es sein, dass durch session_start() bei ihm jedesmal eine neue SessionID generiert wird?

                        Kommentar


                        • #13
                          Original geschrieben von ThePro
                          Kann es sein, dass durch session_start() bei ihm jedesmal eine neue SessionID generiert wird?
                          Natürlich - wenn du die SID nur per Cookie übergibst, und er diese aber nicht annimmt ...
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            Hmm, gehts auch irgendwie ohne cookies, oder ist das unmöglich?

                            Kommentar


                            • #15
                              Du schauen hier


                              Gruss

                              tobi
                              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                              Kommentar

                              Lädt...
                              X