Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Registrierung - doppelten Einträge verhindern

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

  • PHP Registrierung - doppelten Einträge verhindern

    Hey Leute, ich möchte eine Registration mit PHP erstellen und möchte verhindern, dass sich Nutzer mit dem gleichen Nutzernamen ein zweites mal registrieren können.
    In der MySQL-Datenbank habe ich es schon geschafft dies zu verhindern, nur fehlt mir nun noch die passende Meldung im Script.

    PHP-Code:
    <?php
    include('conn.php');//DB Verbindung
    if($_SERVER['REQUEST_METHOD'] == "POST")
    {
    // Benutzername und Passwort vom Formular gesendet
    $username mysqli_real_escape_string($conn$_POST['user']);
    $password mysqli_real_escape_string($conn$_POST['pass']);
    $password md5($password); //Password entschlüsseln
    $sql "INSERT INTO userpass(user,pass) values('$username', '$password')";
    $result mysqli_query($conn$sql);
    echo 
    "Konto wurde erfolgreich erstellt!";
    }
    ?>
    <!doctype html>
    <html>
    <head>
    <title>Register</title>
    </head>
    <body>
    <h1>Login</h1>
    <form action="<?php $_SERVER['PHP_SELF'];?>" method="post">
    <label>Username</label>
    <input type="text" name="user"><br/><br/>
    <label>Password</label>
    <input type="password" name="pass"><br/><br/>
    <input type="submit" name="submit" value="Create"><br/>
    <p><a href="login.php">Login</a></p>
    </form>
    </body>
    </html>
    ​​​


  • #2
    Ganz einfach : du machst eine Abfrage mit den Inputs und zählst du per count ob es bereits ein Column gibt.
    hier ein Beispiel :


    PHP-Code:
    $query "SELECT COUNT(*) FROM users WHERE username=':$username";

                
    $result $DB->query($query);
                
    $count $result->fetchAll();
                if(
    $count[0]['COUNT(*)'] !=0){
                    
    $error "Provided Email is already in use";
                } 
    Du musst natürlich das ganze noch umwandeln in etwas das man nicht SQL Injecten kann. Beispiele : https://php-de.github.io/jumpto/pdo/...red-statements

    Kommentar


    • #3
      Statt:
      PHP-Code:
      <form action="<?php $_SERVER['PHP_SELF'];?>" method="post">
      solltest du so machen:

      HTML 5
      PHP-Code:
      <form method="post"
      davor:
      PHP-Code:
      <form action="" method="post"
      Hintergrund: Es ist unnötig und sogar eine XSS Lücke wenn du das so verwendest. Kurzum wird gesagt PHP_SELF ist "Böse".
      PHP.de Wissenssammlung | Debugging: Finde DEINE Fehler selbst! | mysql_* ist veraltet! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__ | Kein Support per PN

      Kommentar


      • #4
        und md5 ist auch "Böse" nutze stattdessen https://php.net/password_hash und dann beim login https://php.net/password_verify
        apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp

        Kommentar


        • #5
          Guter Hinweis! Wdknd siehe dazu auch: http://php.net/manual/de/faq.passwords.php
          PHP.de Wissenssammlung | Debugging: Finde DEINE Fehler selbst! | mysql_* ist veraltet! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__ | Kein Support per PN

          Kommentar

          Lädt...
          X