Ankündigung

Einklappen
Keine Ankündigung bisher.

Kontaktformular - Verbesserung

Einklappen

Neue Werbung 2019

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

  • Kontaktformular - Verbesserung

    Hallo,
    bin ganz neu hier! - habe mich schon etwas eingelesen und mich gleich an ein Registrationsscript rangewackt, was Anfangs nicht sehr schwer fiel.

    Hab zu mienem Script ein paar fragen!
    und zwar:

    - wie kann ich überprüfen ob auch eine "richtige Email" adresse eingebene worden ist, also wenigstens überprüfen ob da zum Beispiel "@web.de, @google.de, @IRGENDWAS.de, @wasweißich.com" steht?

    - um mysql infections zu vermeiden und damit gefährliche Sonderzeichen entfernt werden, habe ich mysqli_real_escape_string und trim verwendet! Sollte man da auf noch etwas achten? Macht es etwas aus, wenn man die Variablen bei bestehender Datenbank verbindung einliest, oder ist das Relativ?

    - was sollte ich noch beachten!!! Ist meine "Mailsystem" relativ sicher? und sollte ich lieber Captcha oder einfach Sicherheitsabfragen oder Rechnungen verwenden?

    Hier der Code:
    PHP-Code:

    <?php

                            
    echo "<form action=\"registration.php\" method=\"post\">";
                            echo 
    "<center><font class=\"reg_u\">Registrieren</font></center><br />";
                            echo  
    "<table width=\"300\" border=\"0\">";
                            echo    
    "<tr>";
                            echo      
    "<td width=\"134\" ><font class=\"reg_in\">Nutzername:</font><font class=\"input_red\">*</font></td>";
                            echo      
    "<td width=\"156\" ><input type=\"text\" name=\"nutzername\" /></td>";
                            echo    
    "</tr>";
                            echo    
    "<tr>";
                            echo      
    "<td><font class=\"reg_in\">Passwort:</font><font class=\"input_red\">*</font></td>";
                            echo      
    "<td><input type=\"password\" name=\"passwort\" /></td>";
                            echo    
    "</tr>";
                            echo    
    "<tr>";
                            echo      
    "<td><font class=\"reg_in\">Email:</font><font class=\"input_red\">*</font></td>";
                            echo      
    "<td><input type=\"text\" name=\"email\" /></td>";
                            echo    
    "</tr>";
                            echo    
    "<tr>";
                            echo      
    "<td><font class=\"reg_in\">Vorname:</font><font class=\"input_red\">*</font></td>";
                            echo      
    "<td><input type=\"text\" name=\"vorname\" /></td>";
                            echo    
    "</tr>";
                            echo    
    "<tr>";
                            echo      
    "<td><font class=\"reg_in\">Nachname:</font><font class=\"input_red\">*</font></td>";
                            echo      
    "<td><input type=\"text\" name=\"nachname\" /></td>";
                            echo    
    "</tr>";
                            echo  
    "</table>";
                            echo  
    "<font class=\"input_redbottom\">* Pflichtfelder</font> <br />";
                            echo  
    "<span>Spamschutz: 4+5 = <input size=\"5\" type=\"text\" name=\"spam\" /></span><br />";
                            echo  
    "<input type=\"checkbox\" checked=\"checked\" name=\"einverstanden\" value=\"checked\" />";
                            echo  
    "<font class=\"input_chkd\">Ich bin damit einverstanden, dass meine angegebenen Daten zur Registration Übermittelt werden.</font> <br /> <br />";
                              echo  
    "<input type=\"submit\" value=\"registrieren\" name=\"submit\" />";     
                            echo 
    "</form>";
                            
                            
    # Database connection settings # 
                            
    $db_host 'localhost';  // database hoster
                            
    $db_bnutzer 'root';    // database user
                            
    $db_password '';       // database password
                            
    $db_name 'reg';        // database name  
                            
                            # E-mail function on or off #
                            
    $mailnachricht 'on';                 // email function 'on' or 'off'
                            
    $mailreceiver 'example@email.de'// email receiver 
                            
                            # _________________________________________________________________________________ # 
                            
                            
    $db mysqli_connect($db_host$db_bnutzer$db_password$db_name)
                                  or die (
    'can\'t connect to database ');
                                  
                            
                            
    # varbs def + secure #
                            
    $nutzername mysqli_real_escape_string($dbtrim($_POST['nutzername'])); 
                            
    $passwort mysqli_real_escape_string($dbtrim($_POST['passwort'])); 
                            
    $email mysqli_real_escape_string($dbtrim($_POST['email'])); 
                            
    $vorname mysqli_real_escape_string($dbtrim($_POST['vorname'])); 
                            
    $nachname mysqli_real_escape_string($dbtrim($_POST['nachname'])); 
                            
                            
                            if (isset(
    $_POST['submit']) && $_POST['submit'] == 'registrieren'){
                                
                                if (
    $_POST['einverstanden'] == 'checked' && $_POST['spam'] == '9'){
                                    
                                    if (empty(
    $nutzername) && empty($passwort) && empty($email) && empty($vorname) && empty($nachname)){
                                        
                                        echo 
    "<font style=\"color:red;\">Bitte Vollständig ausfühlen!</font>"
                                    }
                                    else { 
                                        
    $sql "INSERT INTO user (nutzername, password, email, vorname, nachname)".
                                               
    "VALUES ('$nutzername', '$passwort', '$email', '$vorname', '$nachname')";
                                               
                                        
    $ergebnis mysqli_query($db$sql)
                                                    or die (
    'Error - remmi demmi');
                                                    
                                        
    mysqli_close($db);  
                                        
                                        if (
    $ergebnis){
                                            
                                            if (
    $mailnachricht == 'on'){
                                                
                                                
    $betreff "Neuer Benutzer";
                                                
                                                
    $inhalt 'Es hat sich ein neuer Benutzer Registriert. Sein name ist '$vorname' '$nachname' und sein Nickname lautet '.
                                                          
    $nutzername' Das Passwort lautet: '$passwort' Die Daten, wurden Erfolgreich in der Datenbank gespeichert. Have a nice day';
                                            
                                                
    mail("$mailreceiver""$betreff""$inhalt");
                                            }
                                        }                                     
                                    }        
                                }
                                else { 
                                    echo 
    "<font style=\"color:red;\">Bitte setzen sie das Häckchen =)</font>";
                                }
                                
                            }
                       
    ?>


    Vielen Dank im Vorraus!

  • #2
    PHP: checkdnsrr - Manual
    "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

    Kommentar


    • #3
      Dir ist schon klar,
      1.) dass du Passwörter unverschlüsselt in die Datenbank schreibst,
      2.) das (unverschlüsselte) Passwort via E-Mail versendest

      oder?

      Um eine E-Mail Adresse einigermaßen vor-validieren zu können, kannst du [MAN]preg_match[/MAN] verwenden. Danach kannst du die E-Mail Adresse noch mit checkdnsrr überprüfen ob es den Host überhaupt gibt.
      [B]Mfg Tomtaz[/B]
      [I]"Es soll jetzt diese Erfindung geben.... Kugel oder so heißt die. Ist so eine Art Suchmaschine..." [/I]:!::shock:

      Kommentar


      • #4
        schau dir reguläre ausdrücke dafür an. Trim ist aus sicherheitsaspekten beo sql egal. Wichtig ist das escapen und überprüfen des variablen types.

        Falls du anregungen brauchst: versuch funktionen auszulagern oder das ganze ggf als klasse umzusetzen. Ansonsten gefällt es mir ganz gut
        Under Construktion

        Kommentar


        • #5
          Hallo,

          dein HTML ist schlecht. Eine Tabelle für ein Formular zu verwenden ist semantisch falsch. Es fehlen zudem <label> - Tags für die Formularfelder. Das <font> - Tag ist veraltet und Text wird auch nicht über HTML (<center>), sondern mit CSS positioniert.

          Das ganze Formular mit PHP auszugeben ist auch wenig sinnvoll. Du kannst den PHP-Codeblock unterbrechen:
          PHP-Code:
          <?php
          // PHP
          ?>

          <!-- HTML -->

          <?php
          // ...
          [edit]

          Vermutlich einen Blick wert: http://www.homepage-total.de/css/form_ohne_tabelle.php.
          [URL]http://hallophp.de[/URL]

          Kommentar


          • #6
            Oki danke für die tipps.

            Kommentar


            • #7
              Zitat von Asipak Beitrag anzeigen
              Hallo,

              dein HTML ist schlecht. Eine Tabelle für ein Formular zu verwenden ist semantisch falsch. Es fehlen zudem <label> - Tags für die Formularfelder. Das <font> - Tag ist veraltet und Text wird auch nicht über HTML (<center>), sondern mit CSS positioniert.

              Das ganze Formular mit PHP auszugeben ist auch wenig sinnvoll. Du kannst den PHP-Codeblock unterbrechen:
              PHP-Code:
              <?php
              // PHP
              ?>

              <!-- HTML -->

              <?php
              // ...
              [edit]

              Vermutlich einen Blick wert: CSS / Formulare ohne Tabellen - Homepage-Total.de.


              Oki Danke mit CSS kann ich mir da echt einige Zeichen Sparen. Wie lautet der tag den nun, wenn nicht mehr <font></font> verwendet wird?

              MFG Danke im Vorraus!

              Kommentar


              • #8
                Dafür kannst du das <label> - Tag benutzen und das Sternchen (*) kannst du zusätzlich noch über das <span> - Tag anders formatieren.
                [URL]http://hallophp.de[/URL]

                Kommentar


                • #9
                  Zitat von Asipak Beitrag anzeigen
                  Dafür kannst du das <label> - Tag benutzen und das Sternchen (*) kannst du zusätzlich noch über das <span> - Tag anders formatieren.
                  Hilfreicher Tipp!!! DANKE!

                  Kommentar

                  Lädt...
                  X