Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfestellung bei Anmeldescript

Einklappen

Neue Werbung 2019

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

  • Hilfestellung bei Anmeldescript

    Moin,
    ich bin noch sehr am Anfang meiner PHP-Karriere und bräuchte einmal eine kleine Hilfestellung von Euch.
    Ich habe mir über ein Formular, per POST, Daten an meine PHP Seite geschickt. Eigentlich sollte, wenn die Daten korrekt eingegeben wurden, sollte ein Ordner ausgelesen werden mit der Möglichkeit diese im Anschluss herunter zu laden.
    Dazu muss gesagt sein, dass ohne Else, der Code funktioniert, ich das aber gerne mit implementiert hätte ...
    Danke im Voraus für die Hilfe
    Hier der Code:
    PHP-Code:

    <?php
    $admin
    =$_POST["user"];
    $pass=$_POST["pw"];
    $root="administrator";
    $root_pw="test12345";

    if (
    $admin==$root and $pass==$root_pw)
        {
        
    $ordner "Dokumente"
        
    $alledateien scandir($ordner); 
        foreach (
    $alledateien as $datei
        {
        
    $dateiinfo pathinfo($ordner."/".$datei);
        
    $size ceil(filesize($ordner."/".$datei)/1024);
        }}

    if (
    $datei != "." && $datei != ".."  && $datei != "_notes"
    ?>
    <li><a href="<?php echo $dateiinfo['dirname']."/".$dateiinfo['basename'];?>"><?php echo $dateiinfo['filename']; ?></a> (<?php echo $dateiinfo['extension']; ?> | <?php echo $size ?>kb)</li>
    <?php
    };
    };
    else
        {
        echo 
    "ERROR: User/Passwort falsch";    
        }
    ?>
    Sowie der HTML-Code:

    HTML-Code:
    <!DOCTYPE html>
    <html>
        <body>
            <form action="ausgabe.php" method="post">
                Benutzername<input type="text" name="user"><br>
                Passwort<input type="password" name="pw"><br>
                <input type="submit" value="Login">
            </form>
        </body>
    </html>

  • #2
    Hallo!

    Und was ist die Frage?
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Ich bekomme folgende Fehlermeldung:
      Parse error: syntax error, unexpected '}', expecting end of file in C:\xampp\htdocs\StamE\ausgabe.php on line 21
      Ich probiere also seit einer Stunde den Fehler durch umstellen der Else zu beheben, schaffe es aber nicht.
      Können Sie/Ihr mir helfen die Funktion zum laufen zu bringen?

      Kommentar


      • #4
        Da fehlt ein { beim zweiten if, dafür hats danach ein } zu viel. Und die ; nach dem } brauchts auch nicht.

        Kommentar


        • #5
          EDIT:
          Habe die Tipps von jonas3344 befolgt, Code läuft, gibt aber komischerweise nur die erste Position vom Ordner aus ...
          Ebenso bekomme ich eine Undefined variable Fehlermeldung wenn ich das PW falsch eingebe.
          Hat jemand noch einen Tipp wo ich das Else hinsetzten kann?

          Kommentar


          • #6
            Solche Fehler kann man übrigens durch sauberes und konsequentes Einrücken verhindern. https://www.php-fig.org/psr/psr-2/#51-if-elseif-else

            Die Notice wirst du immer bekommen wenn du die Seite normal - also ohne POST aufrufst, weil die dann einfach nicht vorhanden ist. Dafür gibt es isset() oder empty() oder filter_input() kannst du nutzen etc etc...
            The string "()()" is not palindrom but the String "())(" is.

            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              Das Else ist am richtigen Ort, innerhalb des ifs stimmt es nicht. Das solltest du dir nochmals in aller Ruhe durchsehen und überlegen was du dort machen willst und wann du die Schleife zumachst.
              Richtig einrücken hilft da extrem, da schliess ich mich hausl an.

              Kommentar


              • #8
                hausl Danke für den Rat, werde ich drauf achten.
                Hast Du eine Idee warum nur die Erste Position von dem Ordner-Inhalt angezeigt wird?
                Ich steige da nicht mehr so wirklich durch ...

                Kommentar


                • #9
                  Ungetestet.

                  PHP-Code:
                  <?php
                  $admin
                  =$_POST["user"];
                  $pass=$_POST["pw"];
                  $root="administrator";
                  $root_pw="test12345";

                  if (
                  $admin==$root and $pass==$root_pw) {
                      
                  $ordner "Dokumente";
                      
                  $alledateien scandir($ordner);
                      foreach (
                  $alledateien as $datei)
                      {
                        
                  $dateiinfo pathinfo($ordner."/".$datei);
                        
                  $size ceil(filesize($ordner."/".$datei)/1024);

                         if (
                  $datei != "." && $datei != ".."  && $datei != "_notes") {
                         
                  ?>
                             <li><a href="<?php echo $dateiinfo['dirname']."/".$dateiinfo['basename'];?>"><?php echo $dateiinfo['filename']; ?></a> (<?php echo $dateiinfo['extension']; ?> | <?php echo $size ?>kb)</li>
                    <?php
                         
                  }
                    }
                  }
                  else
                      {
                      echo 
                  "ERROR: User/Passwort falsch";    
                      }
                  ?>

                  Kommentar


                  • #10
                    jonas3344 Funktioniert!
                    Besten Dank

                    Kommentar


                    • #11
                      Und hast du auch verstanden wo der Unterschied zwischen deiner und meiner Version liegt?

                      Kommentar


                      • #12
                        Und noch mit PSR-Einrückung

                        PHP-Code:
                        <?php
                        // ...

                        if ($admin == $root and $pass == $root_pw) {
                            
                        $ordner "Dokumente";
                            
                        $alledateien scandir($ordner);

                            foreach (
                        $alledateien as $datei) {
                                
                        $dateiinfo pathinfo($ordner."/".$datei);
                                
                        $size ceil(filesize($ordner."/".$datei)/1024);

                                if (
                        $datei != "." && $datei != ".."  && $datei != "_notes") {
                                    
                        ?>
                                    <li><a href="<?php echo $dateiinfo['dirname']."/".$dateiinfo['basename'];?>"><?php echo $dateiinfo['filename']; ?></a> (<?php echo $dateiinfo['extension']; ?> | <?php echo $size ?>kb)</li>
                                    <?php
                                
                        }
                            }

                        } else {
                            echo 
                        "ERROR: User/Passwort falsch";    
                        }
                        Bei der Ausgabe nach HTML solltest du noch htmlspecialchars() nutzen um den Kontextwechsel richtig zu behandeln. Das ist sonst eine Fehlerquelle und potentielle XSS-Lücke.
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          jonas3344 Lags daran?
                          PHP-Code:
                          <?php
                          $admin
                          =$_POST["user"];
                          $pass=$_POST["pw"];
                          $root="administrator";
                          $root_pw="test12345";

                          if (
                          $admin==$root and $pass==$root_pw)
                              {
                              
                          $ordner "Dokumente"
                              
                          $alledateien scandir($ordner); 
                              foreach (
                          $alledateien as $datei
                              {
                              
                          $dateiinfo pathinfo($ordner."/".$datei);
                              
                          $size ceil(filesize($ordner."/".$datei)/1024);
                              }} 
                          //beide }} entfernt

                          if ($datei != "." && $datei != ".."  && $datei != "_notes"// { hinzugefügt
                          ?>
                          <li><a href="<?php echo $dateiinfo['dirname']."/".$dateiinfo['basename'];?>"><?php echo $dateiinfo['filename']; ?></a> (<?php echo $dateiinfo['extension']; ?> | <?php echo $size ?>kb)</li>
                          <?php
                          }; 
                          }; 
                          //; entfernt und eine Klammer hinzugefügt
                          else
                              {
                              echo 
                          "ERROR: User/Passwort falsch";    
                              }
                          ?>
                          Einrücken hilft echt unheimlich, musste ich wohl oder übel feststellen

                          Kommentar


                          • #14
                            Yep, genau. Du hast die foreach zugemacht, logischerweise gibt er dann immer nur einen Ordner aus.

                            Kommentar

                            Lädt...
                            X