Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] [Sicherer Zugriff]: Login funktioniert nicht mehr

Einklappen

Neue Werbung 2019

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

  • [Erledigt] [Sicherer Zugriff]: Login funktioniert nicht mehr

    Hallo,

    ich möchte meine php-Dateien so anpassen, dass der Benutzer sich diese nicht über den Pfad aufrufen kann. Dafür habe ich meine Hauptseite durch folgendes ergänzt:

    PHP-Code:
        //Sicherer Zugriff: Benutzer muss angemeldet sein
        
    if(empty($_SESSION['EMAIL']) OR $_SESSION['loggedIN'] == FALSE)
        {
            
    header("Location: login.php");
            die();
        } 
    Daraus hat sich ein kleines Problem in meinem Script ergeben: Wenn ich mich einloggen möchte, passiert nichts mehr. Ich werde nicht zur Hautseite weitergeleitet und ich bekomme keine Fehlermeldung. Nachdem ich die Login-Daten abschicken möchte, leeren sich die Felder und es passiert nichts.

    Das Loginscript habe ich zwar nicht verändert, aber falls es erforderlich sein sollte, führe ich es hier mal mit auf:

    PHP-Code:
    ...
    <?php
    session_start
    ();

    if (
    $_POST['login_x'])
        {
            
    $mail $_POST['EMAIL'];
            
    $psw $_POST['PSW']; 
            
            
    $conn oci_connect ("...");
            
    $sql_string "SELECT EMAIL, PASSWORT, ADMIN, BENUTZERNAME FROM BENUTZER WHERE EMAIL = '".$mail."'";

        
            
    $stmnt oci_parse ($conn$sql_string);
            
    oci_execute($stmnt);                

            while (
    $row oci_fetch_array ($stmntOCI_DEFAULT))
            {
                
    //Passwort prüfen
                
    if($psw == $row['PASSWORT'])
                {
                    
    //Sessions setzen
                    
    $_SESSION['EMAIL'] = $row['EMAIL'];
                    
    $_SESSION['ADMIN'] = $row['ADMIN'];
                    
    $_SESSION['BENUTZERNAME'] = $row['BENUTZERNAME'];
                    
    $_SESSION['loggedIN'] = TRUE

                    
    //Hauptseite anzeigen
                    
    if($row['ADMIN'] == 1)
                    {
                        
    header("Location: Hautseite_admin.php");
                    }
                    else
                    {
                        
    header("Location: Hauteite_verkaeufer.php");
                    }
                    die();
                }
                else
                {
                        echo 
    "Emailadresse oder Kennwort ist falsch. <br>";
                        echo 
    "Noch kein Mitglied? Hier";
                        echo 
    '<a href="Register.php" style="color: white"> registrieren</a> <p>'
                }
            }
            
    oci_close($conn);
        }
    ?>
    </head>

    <body>
    <div style="padding: 100px 0 0 250px;">


    <div id="login-box">
      
    <form action = "login.php" method = "post">
    <br />
    <br />
    <div id="login-box-name" style="margin-top:20px;">Email:</div><div id="login-box-field" style="margin-top:20px;"><input type = "text" name="email" required class="form-login" size="30"></div>
    <div id="login-box-name">Passwort:</div><div id="login-box-field"><input type = "password" name="psw" required class="form-login" size="30"></div>
    <br />
    <br />
    <input type="image" name="login" value="Login" img src="../Bilder/login_btn.png" onClick="return" width="103" height="42" style="margin-left:90px;" />
    </div>
    ...
    Hat jemand einen Tipp für mich wie ich das wieder zum laufen bekomme


  • #2
    PHP-Code:
    session_start();

    if(!isset(
    $_SESSION['EMAIL']) || !$_SESSION['loggedIN']) 

        
    header("Location: www.domain.tld/login.php"); 
        exit();

    Das muss bei jedem Script das nur für eingeloggte User zu sehen sein soll an den Anfang der Datei geschrieben werden
    - Laravel

    Kommentar


    • #3
      Zitat von tera3yte Beitrag anzeigen
      Das muss bei jedem Script das nur für eingeloggte User zu sehen sein soll an den Anfang der Datei geschrieben werden
      Hilft leider nicht. Selbes Problem.

      Kommentar


      • #4
        var_dump($_SESSION) Auf einer deiner Seiten und poste mal die ausgabe
        - Laravel

        Kommentar


        • #5
          PHP-Code:
          if($psw == $row['PASSWORT']) 
          Hash bloß deine Passwörter !! Schau dir mal password_hash / password_verify an. Das solltest du auf jeden Fall benutzen
          - Laravel

          Kommentar


          • #6
            Bin mir nicht sicher, ob ich es richtig umgesetzt habe:

            PHP-Code:
            session_start();

            if(
            var_dump($_SESSION['EMAIL']) || !$_SESSION['loggedIN']) 

                
            header("Location: www.domain.tld/login.php"); 
                exit();

            Falls ja, funktioniert es leider immer noch nicht.

            Kommentar


            • #7
              Naja fast

              PHP-Code:
              session_start();
              var_dump($_SESSION);
              if( ... )
              {


              Wenn du dir die Datei dann anschaust sollte da was stehen und wenn nicht musst du mal das Error-Reporting an machen
              - Laravel

              Kommentar


              • #8
                Zitat von tera3yte Beitrag anzeigen
                PHP-Code:
                if($psw == $row['PASSWORT']) 
                Hash bloß deine Passwörter !! Schau dir mal password_hash / password_verify an. Das solltest du auf jeden Fall benutzen
                Ja das kommt noch

                Ich programmiere ja keine echte Seite. Ist "nur" eine Hausarbeit für die Uni

                Kommentar


                • #9
                  Okay, dennoch denke ich das dein Professoren es begrüßen wenn deine Passwörter gehashed sind
                  - Laravel

                  Kommentar


                  • #10
                    Zitat von tera3yte Beitrag anzeigen
                    Naja fast

                    PHP-Code:
                    session_start();
                    var_dump($_SESSION);
                    if( ... )
                    {


                    Wenn du dir die Datei dann anschaust sollte da was stehen und wenn nicht musst du mal das Error-Reporting an machen
                    Langsam verzweifel ich

                    Habs umgesetzt und es passiert einfach garnichts.
                    Es sieht so aus, als ob die Eingaben einfach verschluckt werden und ein Redirect zum Login anstatt zur Hauptseite statt findet

                    PS: Fehlerreporting müsste aktiv sein. (Bekomme zumindest in anderen Dateien Fehlermeldung ausgegeben)

                    Kommentar


                    • #11
                      Dann kommentiere mal dein header() und dein exit() aus. Dann rufst du die Datei im Browser auf, dann sollte eigentlich was zu sehen sein. Und wenn dann wirklich immer noch nichts kommt musst du die die Fehleranzeige noch erweitern. Ich kenn den PHP-Befehl nicht auswendig, aber ich sehe ob ich ihn finde und spätestens dann sollten wir eine Ausgabe bekommen.

                      PHP-Code:
                      session_start();

                      if(
                      var_dump($_SESSION['EMAIL']) || !$_SESSION['loggedIN']) 

                          
                      //header("Location: www.domain.tld/login.php"); 
                          //exit();
                          
                      echo "Hallo es geht nicht weiter!";
                      }
                      else
                      {
                          echo 
                      "Hallo es geht weiter!";

                      - Laravel

                      Kommentar


                      • #12
                        Hier die Ausgabe: array(0) { }

                        Darunter wird dann die Hauptseite angezeigt (s. Screenshot).
                        Angehängte Dateien

                        Kommentar


                        • #13
                          Heißt also das keine Sessions bekannt sind. Das ist das Problem. Die Sessions werden scheinbar nicht richtig gesetzt.
                          - Laravel

                          Kommentar


                          • #14
                            Wow danke für die Hilfe

                            Ich habe mal versucht die Sessions in der Hauptseite anzupassen.
                            Hier der Auszug aus dem Quelltext:

                            PHP-Code:
                            <?PHP
                            session_start
                            ();

                            $_SESSION['EMAIL'] = $row['EMAIL'];
                            $_SESSION['loggedIN'] = TRUE;             
                                            
                            var_dump($_SESSION); 

                                
                            //Sicherer Zugriff: Benutzer muss angemeldet sein
                                
                            if(!isset($_SESSION['EMAIL']) || !$_SESSION['loggedIN']) 
                                { 
                                    
                            //header("Location: login.php"); 
                                    //exit();
                                    
                            echo "Hallo es geht nicht weiter!";
                            }
                            else
                            {
                                echo 
                            "Hallo es geht weiter!";
                            }
                                
                                
                            $conn oci_connect("...");

                                    
                            $sql_string "SELECT * FROM AUTOMARKE";

                                
                            $stmnt oci_parse($conn$sql_string);
                                
                            oci_execute($stmnt);
                            ?>
                            Bekomme jetzt diese Ausgabe: array(2) { 'EMAIL' => NULL 'loggedIN' => bool(true) } Hallo es geht nicht weiter!

                            Kommentar


                            • #15
                              Schau mal ob auf deiner Loginseite die Sessions gesetzt werden, setzt das var_dump mal ans ende deines Login-Scripts und wenn da wieder nur ein leeres array kommt sind deine bedingungen falsch
                              - Laravel

                              Kommentar

                              Lädt...
                              X