Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Seite mit code schützen

Einklappen

Neue Werbung 2019

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

  • PHP Seite mit code schützen

    Hallo Zusammen!

    Ich habe eine kleine Frage:
    Ich habe vor, meine Webseite mit einem Code zu schützen, der aber gelöscht wird, nachdem er benutzt wird.
    Ich habe bereits den Code Generator in meinem Interface
    Und das Loginformular

    Code-Generator: code_create.php
    PHP-Code:
    <?php

    $code 
    md5(mt_rand());
    $code substr($code08);  
    echo 
    "$text";

    ?>
    Login: code.php
    PHP-Code:
    <?php
    $uc 
    $_POST['user_code'];

    include 
    'code_create.php';
    echo 
    $code
    ?>
    <!DOCTYPE html>
    <html>
    <head>
    <title>Code</title> </head>
    <body>
    <form method="post">
    <input type="text" name="user_code">
    <input type="submit">
    </form>
    <?php
    if ($uc == $code) {
        echo 
    "Korrekt!";
    }
    else {
        echo 
    "Falsch!";
    }
    ?>
    </body>
    </html>
    Ich brauche noch eine Variante zum abspeichern... Habe da an eine Datenbank gedacht...
    Ich hätte jetzt vor, die beiden Dateien nicht zu "verbinden" ich würde bei der code_crate.php die Codes so setzen, dass wenn ein Button betätigt wird, der Code generiert und in die Datenbank eingefügt wird.

    In der code.php würde ich zuerst die Abfrage der Datenbank machen und dann den abgleich der Codes...

    Hättet ihr andere Vorschläge?

    Hinweis: Ich bin PHP-Anfänger und kann schlecht nach Videos o.a. Tutorials arbeiten. Außerdem wurde zu diesem Thema nicht gefunden... Also nichts, wie ich mir das vorgestellt habe! Meine beste lern-Methode ist und bleibt 'learning-by-doing'!


    ______________________________________________

    Mit freundlichen Grüßen

    Simuletsplay

  • #2
    Soll es sicher sein?
    Soll es immer eine unique nummer sein? - Auch bei random kann es irgendwann mal sein das Werte doppelt sind.

    http://php.net/manual/en/function.uniqid.php

    Kommentar


    • #3
      Ich habe ja einen 8-stelligen Code.... Das ganze System wird maximal 20mal im Jahr genutzt!

      Kommentar


      • #4
        Du machst einen Denkfehler.
        Nicht wie oft du dein Ferienhaus nutzt ist von Bedeutung, sondern wie einfach es der Einbrecher hat hinein zu kommen.

        8 Stellen, ob als Passwort oder Authentifizierungscode gelten heute als nicht sicher. Nimm also mindestens 10 Stellen 12 sind noch besser 32 sind optimal.

        TEST:
        PHP-Code:
        <?php
        var_dump
        md5(microtime(true)) );
        var_dumpmd5(microtime(true)) );

        var_dumpbin2hex(openssl_random_pseudo_bytes(16)) );
        var_dumpbin2hex(openssl_random_pseudo_bytes(16)) );
        ?>
        Siehe auch https://www.php.de/forum/webentwickl...36#post1544636

        Kommentar


        • #5
          Hallo!

          Ich habe mich jetzt doch gegen den Code-Generator entschieden!

          Ich habe jetzt in meiner code_create.php folgendes:
          PHP-Code:
          <?php

          $pdo 
          = new PDO('mysql:host=localhost;dbname=code''AUSGEBLENDET''AUSGEBLENDET');
          $code $_POST['code'];
          ?>
          <!DOCTYPE html>
          <head>
          <title>Generiere den Code!</title>
          <meta charset="utf-8">
          <head>
          <body>
          <form action="" method="post">
          <input type="text" name="code">
          <input type="submit">
          </form>
          <?php
          $abfrage 
          $dbConnect->query("INSERT INTO code(code) VALUES('$code')");

                          
          //Überprüfung ob die Abfrage erfolgreich war
                          
          if($abfrage) {

                              
          ?>

                              <p>Erfolgreich!</p>

                              <?php

                          
          }

                          else {

                              
          ?>

                              <p>Fehler!</p>
                              <?php
                          
          }
                              
          ?>
          </body>

          und in der code.php
          PHP-Code:
          <?php
          $pdo 
          = new PDO('mysql:host=localhost;dbname=code''AUSGEBLENDET''AUSGEBLENDET');
          $code $pdo->query("SELECT code FROM code");

          $uc $_POST['user_code']
          ?>
          <!DOCTYPE html>
          <html>
          <head>
          <title>Code</title> </head>
          <body>
          <form method="post">
          <input type="text" name="user_code">
          <input type="submit">
          </form>
          <?php
          if ($uc == $code) {
              echo 
          "Korrekt!";
          }
          else {
              echo 
          "Falsch!";
          }
          ?>
          </body>
          </html>

          Aber immer, wenn ich in der code.php den Code eingebe, den ich auch in der code_create.php eingegeben habe, kommt "Falsch!" Wie es ja in Zeile 22 auch sein soll
          PHP-Code:
          echo "Falsch!"
          ...

          Habe ich irgendwas falsch gemacht?

          Datenbank ist auf TEXT und Länge auf 12
          _______________
          MfG

          Simuletsplay

          Kommentar


          • #6
            Zitat von Simuletsplay Beitrag anzeigen
            Aber immer, wenn ich in der code.php den Code eingebe, den ich auch in der code_create.php eingegeben habe, kommt "Falsch!"
            Logisch. $pdo != $dbConnect und $pdo->query liefert keinen einzelnen Wert.

            Kommentar


            • #7
              Ich habe mal an Frage hierzu

              Zitat von Simuletsplay Beitrag anzeigen
              PHP-Code:
              $code $pdo->query("SELECT code FROM code"); 
              .
              Ist es sinnvoll eine Tabelle und der Spalte den gleichen Namen zu geben?
              Ich dachte immer das sowas nicht vorkommen sollte( darf ) ?
              Oder spricht nix dagegen ?
              Ich mach keine Rechtschreibfehler - ich schreib Freestyle!
              Erreichbar in mein Javascript-Forum und in Facebook-Chat

              Kommentar


              • #8
                Darf man machen, obwohl ich es immer versuchen würde zu vermeiden. Allerdings sollte das Wort code in Backticks `code` stehen zumal es sich hier um ein Schlüsselwort handelt.

                Kommentar


                • #9
                  Wenn du Codes oder geheime Daten in einer externen Datei speicherst, und die per
                  Code:
                  include()
                  einbindest, kannst du die Datei mit den Infos schützen, indem du der Datei eine Endung wie
                  • .mid
                  • .exe (auch das geht!)
                  • .gif
                  • .jp(e)g
                  • .docx
                  gibst. Include() ist das egal, welche Endung es ist.

                  Kommentar


                  • #10
                    Das ist nicht zu empfehlen. Daten die nicht per HTTP-Request zugänglich sein sollen packt man ausserhalb des document root oder man sperrt das Verzeichnis komplett mit einer htacess (Apache Server) Datei, zum Beispiel ein Bilderverzeichnis, etc.

                    Kommentar


                    • #11
                      Zitat von jonah88 Beitrag anzeigen
                      Wenn du Codes oder geheime Daten in einer externen Datei speicherst, und die per
                      Code:
                      include()
                      einbindest, kannst du die Datei mit den Infos schützen, indem du der Datei eine Endung wie […] gibst. Include() ist das egal, welche Endung es ist.
                      Und was genau soll das bringen? Wenn die Dateien per http erreichbar sind (was sie nicht sein sollten wie protestix schon schrieb) ist das sogar kontraproduktiv da der Code in der Datei bei einem Direktaufruf nicht mehr ausgeführt wird sondern 1:1 ausgeliefert wird - und den Inhalt kann man dann ja problemlos anschauen.

                      Kommentar

                      Lädt...
                      X