HTACCESS mit MySQL verbinden

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

  • #16
    Hallo,

    irgendwo hab ich einen Fehler in meinem Script. Wenn ich es aufrufe, bekomme ich nur eine wunderschöne weiße Seite.

    Hier nochmal mein Script:
    PHP-Code:
    <?php

    include("includes/connect.inc.php");

    function 
    login()
    {
       if (!isset(
    $_SERVER['PHP_AUTH_USER']))
       {
          
    Header("WWW-Authenticate: Basic realm=\"Reseller-Login\"");
          
    Header("HTTP/1.0 401 Unauthorized");
          echo 
    "Sie müssen gültige Benutzerdaten eingeben, um die Seite zu betreten!\n";
          
    Header("Location: index.php");
       }
       else
       {
          
    $user $_SERVER['PHP_AUTH_USER'];
          
    $password MD5($_SERVER['PHP_AUTH_PW']);
          
    $abfragequery "SELECT * FROM nuke_users WHERE uname = '$user' AND pass = '$password';";
          
    $abfrageuserdaten = @mysql_query($abfragequery) or die("Konnte den SELECT-Befehl nicht ausführen!");
          
    $reihen mysql_num_rows($abfrageuserdaten);
          if (
    $reihen <= 0
          {
             
    Header("HTTP/1.0 401 Unauthorized");
             echo 
    "Sie müssen gültige Benutzerdaten eingeben, um die Seite zu betreten!\n";
             
    login();
          }
          else
          {
             
    Header("Location: index.php");
          }
       }
    }

    ?>
    Wo habe ich noch einen Fehler?

    Danke, Chriss

    Kommentar


    • #17
      der schlaf hat dir nicht viel gebracht???

      Wenn du nicht in der includes/connect.inc.php eine ausgabe machst, wüsste ich nicht, warum da eine ausgabe erscheinen sollte. Du etwa?

      Kommentar


      • #18
        Ich möchte ja eigentlich keine Ausgabe haben. Es sollte lediglich das Login-Fenster erscheinen. Das kommt aber nicht, wenn ich die ELSE-Bedingung so modifiziere, wie sie jetzt ist. Wenn ich diese so lasse, wie sie auf php.net ist, dann kommt das Login-Fenster und wenn ich irgendetwas eingebe, bekomme ich die Ausgabe, die in der ELSE-Bedingung angegeben wurde.

        Ich möchte aber anstatt der Ausgabe eine Prüfung, ob die eingegebenen Userdaten in der Datenbank enthalten sind.

        Kommentar


        • #19
          Du bist dir aber schon im klaren darüber, dass du die FKT login() auch aufrufen musst, wenn du die ausführen willst, oder?

          im Moment könntest du genausogut
          PHP-Code:
          <?php

          include("includes/connect.inc.php");

          ?>
          benutzten. Hat den selben effekt!

          Kommentar


          • #20
            Ups, o.k., Fehler gefunden, funzt.

            Es gibt aber immer noch Probleme. Wenn jemand falsche Bentuezrdaten eingibt, müsste das Login erneut kommen und vorher der Header 401 gesendet werden. Das funktioniert aber nicht richtig, bekomme dann Fehlermeldung:

            Warning: Cannot add header information - header already sent by (output started at ..\auth.php:25) in ..\auth.php on line 24

            Und diese Zeile bekomme ich dann so oft, bis der Browser abkackt.

            Logge ich mich mit richtigen Daten ein, geht alles, allerdings bei erneuten Aufruf geht er direkt weiter und übergeht den Login. Was kann ich dagegen machen. Kann ich dem Header irgendwie sagen, dass beim Schließen des Browsers die Daten ungültig werden?

            Danke, Chriss
            Zuletzt geändert von Tomcat Chriss; 29.12.2003, 13:42.

            Kommentar


            • #21
              PHP-Code:
              ______echo "Sie müssen gültige Benutzerdaten eingeben, um die Seite zu betreten!\n";

              ______Header("Location: index.php"); 
              echo vor header ist nicht gut! Vielleicht lieber einen Fehlercode per Get übergeben und in index.php ausgeben.

              Offe

              Kommentar


              • #22
                Original geschrieben von Tomcat Chriss
                Warning: Cannot add header information - header already sent by (output started at ..\auth.php:25) in ..\auth.php on line 24
                http://dclp-faq.de/q/q-fehler-header.html
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #23
                  O.K. den Fehler habe ich jetzt auch behoben. Jetzt habe ich aber immer noch ein Problem. Damit der Login nach der Eingabe von falschen Benutzerdaten erneut aufgerufen wird, dürfen die Variablen $_SERVER['PHP_AUTH_USER'] und $_SERVER['PHP_AUTH_PW'] nicht gesetzt sein. Diese werden aber sofort gesetzt, sobald man auf OK klickt, auch wenn diese falsch sind.

                  Auf php.net stand, dass man das durch aufrufen des Headers "Header("HTTP/1.0 401 Unauthorized");" erreichen könnte. Das funktioniert aber nicht, er löscht die Variablen einfach nicht.

                  Wie kann ich sicher die beiden Variablen löschen?

                  Kommentar


                  • #24
                    Variablen löscht man mit unset()

                    Kommentar


                    • #25
                      Bei unset() habe ich genau das gleiche Problem. Ich übergebe folgende Befehle, bevor ich einen Text-Link ausgebe, über den dann erneut die auth1.php aufgerufen wird:
                      PHP-Code:
                      unset($_SERVER['PHP_AUTH_USER']);
                      unset(
                      $_SERVER['PHP_AUTH_PW']); 
                      Kann ich denn solche Variablen auch löschen? Vielleicht zur Veranschaulichung hier noch einmal das komplette Script:
                      PHP-Code:
                      <?php

                      include("includes/connect.inc.php");
                      login();

                      function 
                      login()
                      {
                         if (!isset(
                      $_SERVER['PHP_AUTH_USER']))
                         {
                            
                      Header("WWW-Authenticate: Basic realm=\"Reseller-Login\"");
                            
                      Header("HTTP/1.0 401 Unauthorized"); 
                            echo 
                      "Sie müssen gültige Benutzerdaten eingeben, um die Seite zu betreten!\n";
                         }
                         else
                         {
                            
                      $user $_SERVER['PHP_AUTH_USER'];
                            
                      $password MD5($_SERVER['PHP_AUTH_PW']);
                            
                      $abfragequery "SELECT * FROM nuke_users WHERE uname = '$user' AND pass = '$password';";
                            
                      $abfrageuserdaten = @mysql_query($abfragequery) or die("Konnte den SELECT-Befehl nicht ausführen!");
                            
                      $reihen mysql_num_rows($abfrageuserdaten);
                            if (
                      $reihen <= 0
                            {
                               unset(
                      $_SERVER['PHP_AUTH_USER']);
                               unset(
                      $_SERVER['PHP_AUTH_PW']);
                               echo 
                      "<a href=\"auth1.php\">Sie haben falsche Benutzerdaten eingegeben. Klicken Sie bitte hier, um den Vorgang zu wiederholen.</a>";
                            }
                            else
                            {
                               
                      Header("Location: index.php");
                            }
                         }
                      }

                      ?>

                      Kommentar


                      • #26
                        Sind ja auch umgebungsvariablen. Da hast du afaik keinen Einfluss drauf.

                        Kommentar


                        • #27
                          Siehst Du dann evtl. eine andere Möglichkeit, wie das regeln kann?

                          Kommentar


                          • #28
                            EDIT:
                            Hmmm...wurde schon erwähnt: Normal müsste es mit nem 404-Header alles weg sein laut php.net
                            Zuletzt geändert von Samson2k; 30.12.2003, 00:26.
                            Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
                            (Albert Einstein)

                            Kommentar


                            • #29
                              sind die variablen nur gesetzt, oder haben sie auch einen Inhalt ?
                              hopka.net!

                              Kommentar


                              • #30
                                @Samson2k: Soweit ich das auf php.net ersehen konnte, wird das mit Header("HTTP/1.0 401 Unauthorized") gemacht, aber das funktioniert nicht.

                                @Hopka: Also wenn ich mir die Variablen ausgeben lassen will, dann bekomme ich nicht zurückgegeben. Ich weiß allerdings nicht, ob die Variable beim Absenden einer leeren Login-Maske nicht gefüllt werden oder ob sie mit NULL gefüllt werden. Wie kann ich das feststellen?

                                Kommentar

                                Lädt...
                                X