Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP-mySQL Login-Formular

Einklappen

Neue Werbung 2019

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

  • PHP-mySQL Login-Formular

    Hallöchen.

    Ich würde mir selbst gerne eine Webseite aufbauen, was ich größtenteils auch schon getan habe. Klick

    Ich muss dazu sagen, dass ich absoluter Neulung bin und nicht von viel eine Ahnung hab. Bitte also verständlich erkläre.

    Jetzt geht es darum im Registrierungsformular Pflichtfelder einzufügen.
    Ich habe schon einiges versucht. Mein aktueller Versuch liegt bei class=required, jedoch funktioniert dieser nicht.

    Desweiteren möchte ich das ganze dann auch so gestalten, dass der zu registrierende die Registrierung ERST per mail bestätigen muss, bevor er sich einloggt und ich möchte darüber per E-Mail benachrichtigt werden, dass die person mit den Daten ..... sich registriert hat.


    Könnt ihr mir weiterhelfen?

    Hier mein Code: PHP-Code:
    PHP-Code:
     <?php
    if(!isset($_GET["page"])) {
    ?>
    <form action="registrierung.php?page=2" method="post">
    Name: <input type="text" name="name" class="required" /><br />
    Vorname: <input type="text" name="vname" class="required" /><br />
    Stra&szlig;e: <input type="text" name="str" /><br />
    Hausnummer: <input type="text" name="hnr" /><br />
    Postleitzahl: <input type="text" name="plz" /><br />
    Ort: <input type="text" name="ort" /><br />
    Telefon: <input type="text" name="tel" /><br />
    Faxnummer: <input type="text" name="fax" /><br />
    Handy: <input type="text" name="handy" /><br />
    Benutername: <input type="text" name="user" class="required" /><br />
    E-Mail-Adresse: <input type="email" name="email" class="required" /><br />
    Passwort: <input type="password" name="pw" class="required" /><br />
    Passwort wiedeholen: <input type="password" name="pw2" class="required" /><br />
    <input type="submit" value="Senden" />
    </form>
    <?php
    .required ?>
    <?php
    }
    ?>
    <?php
    if(isset($_GET["page"])) {
    if(
    $_GET["page"] == "2") {
    $name = ($_POST["name"]);
    $vname = ($_POST["vname"]);
    $str = ($_POST["str"]);
    $hnr = ($_POST["hnr"]);
    $plz $_POST["plz"];
    $ort = ($_POST["ort"]);
    $tel = ($_POST["tel"]);
    $fax = ($_POST["fax"]);
    $handy = ($_POST["handy"]);
    $user strtolower($_POST["user"]);
    $email = ($_POST["email"]);
    $pw = ($_POST["pw"]);
    $pw2 = ($_POST["pw2"]);

    if(
    $pw != $pw2) {
    echo 
    "Deine Passwörter stimmen nicht überein. Bitte wiederhole deine Eingabe.... <a href="registrierung.php">zurück</a>";
    } else {
    $verbindung mysql_connect("localhost""user""Passwort")
    or die (
    "Fehler im System");

    mysql_select_db("Datenbankname")
    or die (
    "Verbidung zur Datenbank war nicht möglich...");

    $control 0;
    $abfrage "SELECT user FROM login WHERE user = '$user'";
    $ergebnis mysql_query($abfrage);
    while(
    $row mysql_fetch_object($ergebnis))
    {
    $control++;
    }
    if(
    $control != 0) {
    echo 
    "Username schon vergeben. Bitte verwende einen anderen Usernamen.... <a href="registrierung.php">zurück</a>";
    } else {
    $eintrag "INSERT INTO login
    (user, passwort)

    VALUES
    ('
    $user', '$pw')";

    $eintragen mysql_query($eintrag);

    if(
    $eintragen == true) {
    echo 
    "Vielen Dank. Du hast dich nun registriert... <a href="das-bin-ich.php">Jetzt anmelden</a>";
    } else {
    echo 
    "Fehler im System. Bitte versuche es später noch einmal...";
    }
    mysql_close($verbindung);
    }
    }
    }
    }
    ?>
    </body>
    </html>
    Bitte auch Mitteilen, was ich wo an welcher Stelle einfügen muss.

    Gruß
    Dennis

  • #2
    Bitte ersteinmal deinen Code in PHP Tags packen ...

    Code:
    [PHP[/PHP]
    Verwende nicht mehr die mysql_* Funktionen, die sind veraltet, verwende stattdessen mysqli_* Funktionen.

    Nimm die Überprüfung ob die Felder leer sind Serverseitig vor, ist sicherer.
    Zusätzlich dann noch in HTML:

    PHP-Code:
    <input type="text" name="vname" required="required" /> 
    Damit kannst du teilweise unnötige Requests verhindern.


    Mit PHP überprüfen ob alle Felder gesetzt
    PHP-Code:
    //Pflichtfelder hier eintragen
    if(isset($_POST['name']) && isset($_POST['strasse']) && etc.)
    {
      
    //weitermachen
    }
    else
    {
     echo 
    "Alle Felder ausfüllen.";


    Zu dem dass sich der Benutzer erst einloggen kann wenn er per E-Mail bestätigt wurde.
    Einfach bei der Registrierung in die Datenbank isActivated = false z.B. setzen und einen Random generierten String in die Datenbank speichern. Dann eine Mail versenden mit Link der als GET Parameter diesen Random String und die ID/Slug des Benutzers enthält. Wenn der benutzer dann diese Seite aufruft und der übergebene String = der in der Datenbank ist, in der Datenbank isAcitvated = true setzen.

    Und beim Login einfach überprüfen ob isActivated = true ist.
    "Software is like Sex, it's best if it's free." - Linus Torvalds

    Kommentar


    • #3
      Und nutze dann bei DB Umstellung auch gleich prepared Statments, du bist aktuell gerade offen für SQL-Injecitons.

      http://php-de.github.io/jumpto/sql-injection/

      Ein PDO Tutorial ist in Arbeit (Im Laufe diese Woche hoffe ich damit weiterzukommen). Hier ist die Baustelle, ev. hilft dir das ja schon: http://php-de.github.io/jumpto/pdo/

      LG
      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


      • #4
        Ein wichtiges Prinzip lautet "EVA" - Eingabe, Verarbeitung, Ausgabe.

        Wenn du PHP und HTML in einer Datei stehen hast, gehört der PHP Code immer an den Anfang der Datei.
        Du überprüfst, ob die Anfrage (= Eingabe) irgendwelche Daten enthält, die du mit deinem Code verarbeiten willst und wenn dem so ist, verarbeitest du und bereitest dabei die Daten vor, die "hinten" ausgegeben werden sollen.
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Ich würde generell Html und Php-Code immer trennen.

          Kommentar


          • #6
            Beispiel/Erläuterung: http://php-de.github.io/jumpto/eva-prinzip/#umsetzung
            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

            Lädt...
            X