1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

PHP-Formular - Quellcode sauber/ohne unnütze Funktionen?

Discussion in 'Programmieren' started by Donna, Oct 11, 2011.

Thread Status:
Not open for further replies.
  1. Donna

    Donna Byte

    Hallo ich muss in der Schule ein Referat über mein erstelltes PHP-Konaktformular halten.

    Ich hab mir vorher ein Formular heruntergeladen und die Daten die das Formular Ausgebem soll, beinhalten soll hinzugefügt, und die Sachen die es nicht ausgeben soll entfernt.

    Das Formular funktioniert und es wird auch auf der Internetseite und beim empfang der E-mail nur die erwünschen Daten angezeigt.


    Trotzdem bin ich mir nicht sicher, ob das Formular von der vorgefertigten Version im Quelltext noch unnützige Daten enthält die später nicht sichtbar sind.

    Daher wollte ich euch fragen ob ihr noch solche Daten seht.


    Außerdem muss ich die Funktion des Befehls erklären auch da bin ich mir sicher ob die Erklärung stimmt.

    Daher wäre ich euch dankbar, wenn ihr mir das verbessern könntet.


    Das Formular entspricht folgenden Anweisungen:
    Das Kontaktformular sollte beim Anklicken des Sende-Buttons an die E-Mail-Adresse geschickt werden.
    Beim Eingang der E-Mail sollte die Webadresse des Formulars als Betreffzeile erscheinen,
    Außerdem sollte das Formular die Pflichtfelder Name, Telefonnummer und E-Mail-Adresse, sowie die Wahlfelder Firma, Straße, PLZ Ort und Nachricht enthalten.
    Wenn ein Formular ohne Eingabe der Pflichtfelder abgeschickt wird, dann sollte eine Fehlermeldung ausgegeben werden. Auch der Ve
    rsand zum Empfänger sollte dabei unterbunden werden.

    Das ist der Quelltext:
    <?php
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // Kontaktformular.org
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


    // Einstellungen

    // Ihre E-Mailadresse
    $ihre_emailadresse = 'xxxxxx@xxx.xx';

    // Absender || Muster(From: NAME <EMAIL>) // Beispiel: 'From: Max Mustermann <max@musterdomain.tld>'
    $email_absender = 'From: Kontaktformular <xxxxx@xxxx.xx>'';

    // Betreff

    $server = getenv("SERVER_NAME");

    $email_betreffzeile = "Feetback: $server\n";

    // Hinweismeldungen



    #Kein Name eingegebenAnfang Befehl für Fehlermeldung
    $errormessage[1] = '<br />- Ungültiger Name';

    #Ungültige E-Mailadresse eingegeben
    $errormessage[2] = '<br />- Ungültiger E-Mailadresse';

    #Keine Telefonnummer eingegeben
    $errormessage[3] = '<br />- Ungültige Telefonnummer';
    Ende Befehl für Fehlermeldungen


    #Ungültiger Sicherheitscode
    $errormessage[5] = '<br />- Ungültiger Sicherheitscode'; Unnötig?

    #Ungültiger Zeichen (Spamverdacht)
    $errormessage[6] = '<br />- Ungültige Zeichen entdeckt';Unnötig?

    #Alle Felder sind OK
    $okay = '<span class="beiAbsendung">Vielen Dank für Ihre Nachricht, wir werden Sie demnächst bearbeiten!</span><br /><br />';Text , der nach Absendung des Formulars mit den korrekten Daten angezeigt wird





    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


    #######################################
    session_start();Wofür ist der Befehl, wie kann man diesen erklären?
    #######################################

    Anfang befehl für den Versand der eingegebenen Daten, bzw. für die Versendeart
    if(isset($_POST['submit'])) {
    #######################################

    $name = check($_POST['name']);
    $email = check($_POST['email']);
    $telefon = check($_POST['telefon']);
    $firma = check($_POST['firma']);
    $strasse = check($_POST['strasse']);
    $plz_ort = check($_POST['plz_ort']);
    $nachricht = check($_POST['nachricht']);
    $homepage = check($_POST['homepage']);
    Ende Versendebefehl
    #######################################
    Host und IP-Abfrage des Formularabsenders
    $ip = $_SERVER['REMOTE_ADDR'];
    $host = gethostbyaddr($ip);

    #######################################
    Ermitlung der Zeit, Datum, Uhrzeit
    $zeit = time();
    $datum = date ("d.m.Y", $zeit);
    $uhrzeit = date ("H:i:s", $zeit);

    #######################################

    Überprüfung ob die Pflichtfelder angegeben wurden, wenn nicht dann wird die Fehlermeldung angezeigt, Fehler liegt vor wenn $fehler 1 ist, oder?

    if($name==''){$message .= $errormessage[1]; $fehler = 1;}

    if(!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,6})$", $email)) {
    $message .= $errormessage[2]; $fehler = 1;}

    if($telefon==''){$message .= $errormessage[3]; $fehler = 1;}





    if(ehi_check()!=0){$message .= $errormessage[6]; $fehler = 1;}

    $message .= '</span><br /><br />';

    #######################################

    #######################################
    Befehl der befiehlt welcher Text, welche Daten in der E-Mail nachricht angezeigt werden sollen
    if(!isset($fehler)){

    $email_nachricht = "-- Kontakformularanfrage --\n\nBetreff: $betreff";


    $email_nachricht = "Firma: $firma\nName: $name\nStraße: $strasse\nPLZ, Ort: $plz_ort\nTelefon: $telefon\n";

    $email_nachricht .= "E-Mailadresse: $email\n";

    $email_nachricht .= "Nachricht: $nachricht\n\n";


    $email_nachricht .= "IP: $ip\nHost: $host\n";


    $email_nachricht .= "gesendet am $datum um $uhrzeit.";





    Wisst ihr wozu diese Befehle notwendig sind?
    // Mail senden
    @mail($ihre_emailadresse, $email_betreffzeile, $email_nachricht, $email_absender);

    //Variablen resetten


    $meldung=$okay;

    } else {
    $meldung=$message;
    }
    #######################################
    #######################################
    } //endissetsubmit
    else{$meldung='';}


    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ?>

    Tabelle mit den anzuzeigenden Text sowie den Texeingabefeldern, damit der Benutzer die Daten eingeben kann, daher Formularoberfäche
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>

    <title>Kontaktformular</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="content-style-type" content="text/css" />
    <meta http-equiv="content-script-type" content="text/javascript" />

    <style type="text/css">
    body,td,th{font-family:Verdana,Arial,Helvetica,sans-serif;font-size:12px;color:#333333;}
    body{background-color: #FFFFFF;}
    a:link, a:visited, a:active{color:#0066FF;text-decoration:none;}
    a:hover{text-decoration: underline;}
    span.beiAbsendung {color: red; font-family:Verdana,Arial,Helvetica,sans-serif;}

    </style>

    <script type="text/javascript">
    function reload_captcha(){
    var nd = new Date();
    var src="captcha.php?"+nd;
    document.getElementById("captcha").src= src;
    }
    </script>

    </head>
    <body>

    <p><strong>Kontaktformular:</strong></p>
    <form name="kontaktformular" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">

    <table style="width:500px">
    <tr><td colspan="2"><?php echo $meldung; ?></td></tr>


    <tr>
    <td style="width:150px"><strong>Firma:</strong></td>
    <td><input name="firma" type="text" value="<?php echo $firma; ?>" size="40" maxlength="100" /></td>
    </tr>

    <tr>
    <td style="width:150px"><strong>Name:</strong></td>
    <td><input name="name" type="text" value="<?php echo $name; ?>" size="40" maxlength="100" /></td>
    </tr>

    <tr>
    <td style="width:150px"><strong>Straße:</strong></td>
    <td><input name="strasse" type="text" value="<?php echo $strasse; ?>" size="40" maxlength="100" /></td>
    </tr>



    <tr>
    <td style="width:150px"><strong>PLZ, Ort:</strong></td>
    <td><input name="plz_ort" type="text" value="<?php echo $plz_ort; ?>" size="40" maxlength="100" /></td>
    </tr>


    <tr>
    <td style="width:150px"><strong>Telefon:</strong></td>
    <td><input name="telefon" type="text" value="<?php echo $telefon; ?>" size="40" maxlength="100" /></td>
    </tr>

    <tr>
    <td style="width:150px"><strong>E-Mail Adresse:</strong><br /></td>
    <td><input name="email" type="text" id="email" value="<?php echo $email; ?>" size="40" maxlength="100" /></td>


    <tr>
    <td style="width:150px"><strong>Nachricht:</strong></td>
    <td><textarea name="nachricht" cols="40" rows="10" style="white-space: nowrap;"><?php echo $nachricht; ?></textarea></td>
    </tr>
    <tr>
    <td style="width:150px">&nbsp;</td>
    <td>&nbsp;</td>
    </tr>



    <tr>
    <td style="width:150px">&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td style="width:150px">&nbsp;</td>
    <td><input type="submit" value="Abschicken" name="submit" />
    <!-- Hinweis darf nicht entfernt werden! -->
    <p><span style="font-size:10px; font-family:Verdana, Arial, Helvetica, sans-serif">
    &copy; Script Powered by <a target="_blank" href="http://www.kontaktformular.org" title="kostenloses Kontaktformular">kostenloses Kontaktformular</a></span></p>
    <!-- Hinweis darf nicht entfernt werden! --></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    <?php
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Wisst ihr was der untere Teil noch bedeutet?
    function check($var){
    $varsafe=trim(strip_tags($var));
    return $varsafe;
    }


    function ehi_check(){
    $achtung=0;
    foreach($_POST as $val){
    $pos = strpos(strtolower($val), 'content-type:'); if($pos !== false){$achtung++;}
    $pos = strpos(strtolower($val), 'content-type'); if($pos !== false){$achtung++;}
    $pos = strpos(strtolower($val), 'bcc:'); if($pos !== false){$achtung++;}
    $pos = strpos(strtolower($val), 'bcc'); if($pos !== false){$achtung++;}
    } //endforeach
    return $achtung; // wenn Null dann Alles Okay
    }


    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ?>

    Ich wäre euch wirklich dankbar, wenn ihr mal drüber schauen würdet.
    Wenn ihr wißt wie man die Befehle bzw. den Zweck der Befehle besser erkären könnte, dann könnt ihr gerne Verbesserungsvorschläge machen.

    Liebe Grüße
     
  2. X.MAN

    X.MAN Moderator

    ...eMail-Adressen sind hier im Forum nicht erwünscht und sind zu entfernen!
    (benutze dazu den Button "Ändern")

    Edit: Habe es für dich erledigt.
     
  3. kalweit

    kalweit Hüter der Glaskugel

    http://www.php.net/manual/de/ - hilft weiter. Befehl einfach in die Suche eingeben.
     
  4. wern44

    wern44 ROM

    Hallo,
    function check($var){
    $varsafe=trim(strip_tags($var));
    return $varsafe;
    }

    Dies ist der wichtigste Teil deines Codes. Hiermit wird verhindert, dass "Hacker" unsinn mit deinem Formular machen.
    trim entfernt überflüssige Zeichen z.B. Leerzeichen am Ende
    strip_tags entfernt unerwünschte Tags.
     
Thread Status:
Not open for further replies.

Share This Page