Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

PHP E-Mail Formular

Frage Entwicklung PHP

Mitglied: 69823

69823 (Level 1)

17.09.2008, aktualisiert 21.09.2008, 7640 Aufrufe, 11 Kommentare

http://www.administrator.de/index.php?content=3742c09bfa4f07d6547676ea9 ...

Im obigen Link wird ein Formular vorgestellt, das im 2. Teil auch eine Überprüfung der Einträge im Formularfeld vornimmt. Dieser Vorschlag wird als gelöst gekennzeichnet.
Wir haben nun festgestellt dass mit der Anweisung wie dort gezeigt keine Überprüfung der Eingabe im Formularfeld stattfindet. Das Script ist so übernommen worden wie vorgestellt.
Nur die Eingabefelder wurden entsprechend angepasst.Weiss jemand die Ursache?

Siehe hier:

01.
<?php  
02.
//email script zur Uebermittlung von Formulardaten   
03.
 
04.
$empfaenger = "absender@provider.de"; //hier kommt die email adresse hin, an die die mail geschickt wird  
05.
//bestimmen der eingabefelder  
06.
 
07.
$field1 = $_POST['vorname'];  
08.
$field2 = $_POST['nachname']; 
09.
$field3 = $_POST['strasse']; 
10.
$field4 = $_POST['ort']; 
11.
$field5 = $_POST['telefon']; 
12.
$field6 = $_POST['email']; 
13.
$field7 = $_POST['bestellung']; 
14.
 
15.
//aussehen der email die der E-Mail Empfaenger bekommt  
16.
 
17.
$send = '  
18.
 
19.
        Vorname des Absenders: '.$_POST['vorname'].'  
20.
        Nachname des Absenders: '.$_POST['nachname'].'  
21.
        Strasse und Hausnummer: '.$_POST['strasse'].'  
22.
        PLZ und Wohnort: '.$_POST['ort'].'  
23.
        Telefonnummer: '.$_POST['telefon'].'  
24.
        Die E-Mail Adresse: '.$_POST['email'].'  
25.
        Folgende Artikel werden bestellt: '.$_POST['bestellung'].'  
26.
        ';  
27.
         
28.
//hier die Überprüfung ob der Vorname eingetragen ist 
29.
 
30.
if(!empty($_POST['vorname'])) {   
31.
 
32.
$check_one = true;   
33.
 
34.
} else {   
35.
 
36.
$check_one = false;   
37.
 
38.
}   
39.
 
40.
//hier die Überprüfung ob der Nachname eingetragen ist 
41.
 
42.
if(!empty($_POST['nachname'])) {   
43.
 
44.
$check_one = true;   
45.
 
46.
} else {   
47.
 
48.
$check_one = false;   
49.
 
50.
}   
51.
 
52.
//hier die Überprüfung ob die Strasse eingetragen ist 
53.
 
54.
if(!empty($_POST['strasse'])) {   
55.
 
56.
$check_one = true;   
57.
 
58.
} else {   
59.
 
60.
$check_one = false;   
61.
 
62.
}   
63.
 
64.
//hier die Überprüfung ob der Ort eingetragen ist 
65.
 
66.
if(!empty($_POST['ort'])) {   
67.
 
68.
$check_one = true;   
69.
 
70.
} else {   
71.
 
72.
$check_one = false;   
73.
 
74.
}   
75.
 
76.
//hier die Überprüfung der E-Mail Adresse 
77.
 
78.
if(!empty($_POST['email'])) {   
79.
 
80.
$check_two = true;   
81.
 
82.
} else {   
83.
 
84.
$check_two = false;   
85.
 
86.
}   
87.
 
88.
$email = preg_replace("#[\;\#\n\r\*\'\"<>&\%\!\(\)\{\}\[\]\?\\/\s]#","",$_POST['email']);  
89.
 
90.
if(!preg_match("/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,4})(\]?)$/",$email)<1) {   
91.
 
92.
$check_two_alpha = true;   
93.
 
94.
} else {   
95.
 
96.
$check_two_alpha = false;   
97.
 
98.
}   
99.
 
100.
//hier die Überprüfung ob der Bestelltext eingetragen wurde 
101.
 
102.
if(!empty($_POST['bestellung'])) {   
103.
 
104.
$check_three = true;   
105.
 
106.
} else {   
107.
 
108.
$check_three = false;   
109.
 
110.
}   
111.
//hier die Sendefunktion der E-Mail 
112.
 
113.
if  (mail($empfaenger, 'Neue Bestellung', $send, $from))  
114.
    {  
115.
    echo "Ihre E-Mail wurde erfolgreich an den Empf&auml;nger weitergeleitet.";  
116.
        }  
117.
        else  
118.
        {  
119.
       echo "Bitte &uuml;berpr&uuml;fen Sie Ihre Eingabedaten, ob alle Felder richtig ausgefüllt sind.";  
120.
}  
121.
/* überprüfung ob der verschicken button gedrückt wurde */   
122.
 
123.
if(isset($_POST['submit'])) {   
124.
 
125.
$check_zero = true;   
126.
 
127.
} else {   
128.
 
129.
$check_zero = false;   
130.
 
131.
}   
132.
 
133.
?>
Mitglied: Mitchell
17.09.2008 um 21:33 Uhr
Hi Kieler,

ehrlich gesagt blicke ich da auch nicht ganz durch. Ich sehe auch nicht wirklich, dass er was überprüft.

01.
$check_two = true;
hier frag ich mich a) wo ist die Variable definiert und b) was wird gemacht, wenn die Bedingung nicht wahr ist. Ich sehe nur, dass nach dem else einfach aufgehört wird, dann kommt schon die nächste Abfrage.

Daher würde ich die entsprechenden Snipsets austauschen, evtl. sagt ja noch der ein oder andere was dazu, der nicht so blind ist, wie ich Bsp.:

01.
if ($_post|| $_email == ""
02.
03.
echo "Sie haben nicht alle Felder ausgefüllt"
04.
05.
06.
else 
07.
echo "Danke für Ihren Eintrag"
08.
}
Mit freundlichen Grüßen

Mitchell
Bitte warten ..
Mitglied: 16568
18.09.2008 um 08:56 Uhr
Uiiii Mitchell,

perfekt, machen wir es doch zur Trainings-Aufgabe (wink mit dem Zaunpfahl), dieses Problemchen zu lösen...
(und der Regex für die Email-Adresse sieht auch grausig aus!)


Lonesome Walker
Bitte warten ..
Mitglied: 69823
18.09.2008 um 10:10 Uhr
Das ist eine gute Idee. In diesem Zusammenhang fiel mir auch auf, dass nirgendwo die eventuelle Eingabe von Leerzeichen als Text unterbunden wird. (trim)
Macht das nur im Textfeld Sinn?

Bin gespannt ob dieses Beispiel so hier steht, dass es auch gebraucht werden kann.
Ich habe das Script übrigens nun ordentlich eingestellt.

Kieler
Bitte warten ..
Mitglied: 69823
18.09.2008 um 21:14 Uhr
Ich habe nun das Formular noch einmal überarbeitet. Bei mir funktioniert das Ganze nun, aber leider nicht überall.
Eventuell hat ja einer der Fachleute mal Zeit da drauf zu schauen und zu entdecken wo es klemmt.

Vielen Dank.

01.
<?php  
02.
//email script zur &Uuml;bermittlung von Formulardaten  
03.
 
04.
$empfaenger = "Emailname@provider.de"; //hier kommt die email adresse hin, an die die mail geschickt wird  
05.
//bestimmen der eingabefelder  
06.
 
07.
$field1 = $_POST["vorname"];  
08.
$field2 = $_POST["nachname"]; 
09.
$field3 = $_POST["strasse"]; 
10.
$field4 = $_POST["ort"]; 
11.
$field5 = $_POST["telefon"]; 
12.
$field6 = $_POST["email"]; 
13.
$field7 = $_POST["bestellung"]; 
14.
 
15.
if (empty($field1)) 
16.
{ echo "Sie haben Ihren Vornamen nicht eingegeben.<br>"
17.
echo "Klicken Sie <a href=\"javascript:history.back()\">hier</a>, um zum Formular zurückzukehren und den Fehler zu beheben.<br>"; } 
18.
if (empty($field2)) 
19.
{ echo "Sie haben Ihren Nachnamen nicht eingegeben.<br>"
20.
echo "Klicken Sie <a href=\"javascript:history.back()\">hier</a>, um zum Formular zurückzukehren und den Fehler zu beheben.<br>"; } 
21.
if (empty($field3)) 
22.
{ echo "Sie haben Ihre Strasse nicht eingegeben.<br>"
23.
echo "Klicken Sie <a href=\"javascript:history.back()\">hier</a>, um zum Formular zurückzukehren und den Fehler zu beheben.<br>"; } 
24.
if (empty($field4)) 
25.
{ echo "Sie haben Ihre PLZ oder den Ort nicht eingegeben.<br>"
26.
echo "Klicken Sie <a href=\"javascript:history.back()\">hier</a>, um zum Formular zurückzukehren und den Fehler zu beheben.<br>"; } 
27.
else 
28.
if (empty($field6)) 
29.
{ echo "Sie haben Ihre Email-Adresse nicht eingegeben.<br>"
30.
echo "Klicken Sie <a href=\"javascript:history.back()\">hier</a>, um zum Formular zurückzukehren und den Fehler zu beheben.<br>"; } 
31.
else 
32.
if (empty($field7)) 
33.
{ echo "Sie haben keine Nachricht eingegeben.<br>"
34.
echo "Klicken Sie <a href=\"javascript:history.back()\">hier</a>, um zum Formular zurückzukehren und den Fehler zu beheben.<br>"; } 
35.
else 
36.
if(!ereg(".+@.+\..+", $field6)&& !empty($field6)) { 
37.
echo "Die Email-Adresse ist falsch.<br>"
38.
echo "Klicken Sie <a href=\"javascript:history.back()\">hier</a>, um zum Formular zurückzukehren und den Fehler zu beheben."; } 
39.
 
40.
//aussehen der email die der E-Mail Empf&auml;nger bekommt  
41.
 
42.
$send = '  
43.
 
44.
        Vorname des Absenders: '.$_POST["vorname"].'  
45.
        Nachname des Absenders: '.$_POST["nachname"].'  
46.
        Strasse und Hausnummer: '.$_POST["strasse"].'  
47.
        PLZ und Wohnort: '.$_POST["ort"].'  
48.
        Telefonnummer: '.$_POST["telefon"].'  
49.
        Die E-Mail Adresse: '.$_POST["email"].'  
50.
        Folgende Artikel werden bestellt: '.$_POST["bestellung"].'  
51.
        ';  
52.
//hier die Sendefunktion der E-Mail 
53.
 
54.
if  (mail($empfaenger, 'Neue Bestellung', $send, $from))  
55.
    {  
56.
     
57.
        header("Location: http://www.internet.de"); 
58.
        exit
59.
60.
         
61.
?> 
Bitte warten ..
Mitglied: 69823
19.09.2008 um 10:35 Uhr
Guten Morgen,

Was muss man tun um eine Antwort zu bekommen?
Ich habe alles was notwendig ist hier eingestellt.
Die Weiterschaltung funktioniert nur bei mir auf dem Server.
Auf einer Confix Plattform funktioniert das nicht.
Nun habe ich die Weiterleitung rausgenommen, und ein Echo eingegeben. Es kommt nun der Hinweis dass die E-Mail weitergeleitet wurde.
Dieser Satz kommt aber nun immer, egal ob im Formulareintrag Fehler sind oder nicht.
Ich denke es ist ein Fehler so wie es da steht, weil
der Satz das die Mail erfolgreich verschickt wurde erst kommen darf wenn alle if Bedingungen erfüllt sind. Also alle Formularfelder ausgefüllt!
Wer hat nun bitte das Know How?

Gruß
Kieler
Bitte warten ..
Mitglied: 16568
19.09.2008 um 11:21 Uhr
Hey, das hier ist ein Support-Forum, d.h. HILFE FREIWILLIG.

Suchst Du professionellen Support, besser einen Freelancer buchen, der das gegen Geld macht.


Lonesome Walker
Bitte warten ..
Mitglied: 69823
19.09.2008 um 11:40 Uhr
Das ist ein netter Hinweis.
Ich möchte daran erinnern dass der Ursprung meiner Frage in einem hier als "gelöst" markierten Beitrag liegt.
Eventuell macht es dann Sinn den oben gekennzeichneten Beitrag herauszunehmen, oder ihn zumindest nicht als gelöst zu kennzeichnen.
Damit erspart man sich dann Arbeit.

Wer im Netz solch ein Formular sucht findet das Beispiel und muss dann feststellen dass er SUPPORT braucht.
Aber dann ist er hier ja richtig. Nichts für ungut!

Freundlicher Gruß
Kieler
Bitte warten ..
Mitglied: Mitchell
19.09.2008 um 12:14 Uhr
Was muss man tun um eine Antwort zu bekommen?

diese Frage nicht stellen, dir wird hier kostenlos und gerne geholfen, aber nicht auf Hetze.

Ich sehe in deiner Sendefunktion keine Funktion zum Senden , wo ist die denn?

01.
mail($empfaenger, "Neue Bestellung", $send, "From: $from ");
die Variable $from würde ich aber noch definieren.

Wer hat nun bitte das Know How?

Haben viele hier, aber momentan versuche ich es mal *gg*

Mit freundlichen Grüßen

Mitchell

PS: LSW, dein Zaunpfahl steckt mir mittlerweile schon im Auge ^^
Bitte warten ..
Mitglied: 69823
19.09.2008 um 13:10 Uhr
Moin Mitchell,

Die Sendefunktion ist definiert. Die Variable
$empfaenger ist am Anfang mit der Empfänger E-Mail Adresse gekennzeichnet in Zeile 4.
"Neue Bestellung" kennzeichnet den Betreff in der Mail. Und die Variable $send beschreibt das Aussehen der Mail beim Empfänger. Es ist von Zeile 42-50 festgelegt.
Die Variable $from lief bis jetzt über ein CGI Programm und ich habe es nun wie folgt festgelegt:

01.
"From: $sender <$sendermail>"
hier die ganze Zeile:

01.
if  (mail($empfaenger, 'Neue Bestellung', $send, "From: $sender <$sendermail>");
Bis jetzt schickt das Formular auch eine leere E-Mail. Es sind im Formular keine Daten eingegeben, und das wird dann sofort in den if Festlegungen deutlich gemacht. Da dazu der Senden Button gedrückt wurde ging die Mail raus.

Gruß
Kieler

Nachtrag: Es muss keine Variable für $from definiert werden. Ich habe das Script wieder auf die alte Version reduziert und das if vor Mail rausgenommen. Und jetzt funktioniert das so wie ich wollte.

Gruß
Kieler

PS: Danke für die Anregungen
Bitte warten ..
Mitglied: Mitchell
19.09.2008 um 16:10 Uhr
Hi,

ich habe die Zeilen schon gesehen, nur entging mir die mail-funktion visuell.

Mit freundlichen Grüßen

Mitchell
Bitte warten ..
Mitglied: Arano
21.09.2008 um 03:25 Uhr
Moin moin.

Natürlich wird die Email bzw. der Hinweis des verschickens __immer__ verschickt/ausgegeben.
Schauen wir uns das doch einmal an (verkürzte Version):
01.
<?php 
02.
if( /*check der daten1*/ ){ 
03.
      echo 'daten1 falsch / ungueltig'
04.
} elseif( /*check der daten2*/){ 
05.
      echo 'daten2 falsch / ungueltig'
06.
07.
 
08.
$send = 'Der Inhalt der Email'
09.
 
10.
if( mail($empfaenger, 'Neue Bestellung', $send, $from) ){ 
11.
      header("Location: http://www.internet.de");  
12.
      exit;  
13.
14.
?>
So ist das Script quasi in drei Teile unterteilt:
  • Die Überprüfung der Eingabedaten
  • Das zusammensetzen des Emailinhalt und
  • Das Senden der Email
Diese drei Abschnitte sind absolute __unabhängig von einander__ und werden immer ausgeführt.
Als Beispiel: Vor dem versenden der Email wird nicht einmal geprüft ob die Eingabedaten wirklich korrekt sind und die Email versandt werden darf !

Bei mir sieht das seit einiger Zeit ungefähr so aus:
01.
<?php 
02.
  // !! DAS FOLGENDE SCRIPT IST UNGETESTET !! 
03.
  // !! DAS FOLGENDE SCRIPT IST UNGETESTET !! 
04.
   
05.
  $form_error        = FALSE; 
06.
  $form_error_fields = array(); 
07.
   
08.
  if(isset($_POST['send_form'])){ 
09.
   
10.
      // kurze grundpruefung: 
11.
      $vname = isset($_POST['vname']) && trim($_POST['vname'])!='' ? if_magic_quotes($_POST['vname']) : NULL; 
12.
      $nname = isset($_POST['nname']) && trim($_POST['nname'])!='' ? if_magic_quotes($_POST['nname']) : NULL; 
13.
      $email = isset($_POST['email']) && trim($_POST['email'])!='' ? if_magic_quotes($_POST['email']) : NULL; 
14.
      $homep = isset($_POST['homep']) && trim($_POST['homep'])!='' ? if_magic_quotes($_POST['homep']) : NULL; 
15.
      $text  = isset($_POST['text'])  && trim($_POST['text'])!=''  ? if_magic_quotes($_POST['text'])  : NULL; 
16.
       
17.
      // erweiterte pruefung: 
18.
      if(is_null($vname)  || !preg_match('/^([a-zäöüß\-. ]{3,20})$/i',$vname)                                                          ) $form_error_fields[]='Vorname'
19.
      if(is_null($nname)  || !preg_match('/^([a-zäöüß\-. ]{3,20})$/i',$nname)                                                          ) $form_error_fields[]='Nachname'
20.
      if(!is_null($email) && !preg_match('/^[a-z0-9]+?[a-z0-9\-_.]+[a-z0-9]+@[a-z0-9]+?[a-z0-9\-_.]+[a-z0-9]+?\.[a-z]{2,5}$/i',$email) ) $form_error_fields[]='Email'
21.
      if(!is_null($homep) && !preg_match('/^(http:\/\/|www.|http:\/\/www.)?[a-z0-9\-_.]+\.[a-z]{2,5}([a-z0-9\-_.:\/?&;=%]*)$/i',$homep)) $form_error_fields[]='Homepage'
22.
      if(is_null($text)   || strlen($text)<20                                                                                          ) $form_error_fields[]='Text'
23.
       
24.
      // wenn es keinen eingabefehler gab: 
25.
      if(empty($form_error_fields)){ 
26.
            $form_error = FALSE; // eigentlich unnoetig weil default
27.
            $to         = 'meineMail@example.com'
28.
            $subject    = 'Neue Email von wo auch immer'
29.
            $body       = "Neu Email von wo auch immer\n\n"
30.
            $body      .= "Name     : $vname $nname\n"
31.
            $body      .= "Email    : $email\n"
32.
            $body      .= "Homepage : $homep\n"
33.
            $body      .= "Nachricht: $text\n\n"
34.
            $header     = "From: $vname $nname <$email>\n"
35.
            $header    .= "X-Mailer: PHP/".phpversion()."\n"
36.
            $header    .= "X-Sender-IP: ".$_SERVER['REMOTE_ADDR']."\n"
37.
            $header    .= "MIME-Version: 1.0\n"
38.
            $header    .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n"
39.
            $header    .= "Content-Transfer-Encoding: 8bit\n"
40.
            // wenn die mail versandt wurde: 
41.
            if(@mail($to,$subject,$body,$header)){ 
42.
                  echo 'Ihre Nachricht wurde erfolgreich versandt.'
43.
                  // oder 
44.
                  header('Location: http://www.example.com'); 
45.
            // bei einem mail fehler: 
46.
            } else
47.
                  echo 'Ihre Nachricht konnte leider nicht versandt werden,<br>bitte versuchen Sie es sp&auml;ter erneut.'
48.
49.
      // bei einem eingabefehler: 
50.
      } else
51.
            $form_error = TRUE; 
52.
            echo 'Die Eingaben der Felder: "'.implode('", "', $form_error_fields).'" wurden nicht akzeptiert !<br>'
53.
54.
55.
      
56.
   
57.
  echo '<form action="" method="POST"
58.
          <label for="vn">Vorname</label> 
59.
          <input type="text" name="vname" id="vn" value="'.($form_error ? $vname : 'Max').'"><br> 
60.
          <label for="nn">Bachname</label> 
61.
          <input type="text" name="nname" id="nn" value="'.($form_error ? $nname : 'Musterman').'"><br> 
62.
          <label for="em">Email</label> 
63.
          <input type="text" name="email" id="em" value="'.($form_error ? $email : 'email@adresse').'"><br> 
64.
          <label for="hp">Homepage</label> 
65.
          <input type="text" name="homep" id="hp" value="'.($form_error ? $homep : 'www.example.com').'"><br> 
66.
          <textarea name="text">'.($form_error ? $text : 'Ihre Nachricht an uns...').'</textarea><br> 
67.
          <input type="submit" name="send_form" value="Speichern"
68.
        </form>'; 
69.
   
70.
   
71.
   
72.
   
73.
  function if_magic_quotes($string){ 
74.
      /* funktion zur maskierung von sonderzeichen und 
75.
         umwandlung dieser in htmlentities 
76.
         - krige sie gerade nicht ausm kopf zusammen, - 
77.
         - darum einfach nur so                       - 
78.
      */ 
79.
      return addslashes(htmlentities($string)); 
80.
81.
   
82.
?>
Was haben wir nun hier !?
Diese Datei ist eigentlich in zwei Abschnitte unterteilt:
  • Die Prüfung und der Email versandt
  • Die Ausgabe des Eingabeformulares
  • (ganz unten ist noch eine eigene Funktion der vollständigkeit halber )

Fangen wir beim Formular an, ein paar Eingabefelder und etwas PHP, diese dient zur Wiederanzeige der Eingaben bei einem Fehler damit der Benutzer nicht wieder komplett von vorne beginnen muss.
Wenn es einen Fehle bei den Eingaben gab [$form_error==TRUE] wird die Eingabe, andernfalls der Standardwert als Feldinhalt angezeigt.

Im darüber liegendem PHP wird zuerst geprüft ob das Formular überhaupt abgeschickt wurde [isset($_POST['send_form'])==TRUE].
Danach werden die Eingaben, sofern welche gemacht wurden, in Variablen gespeichert - oder NULL bei keiner Eingabe.
Folgend werden die gesetzten Variablen geprüft (die eigentliche Eingabenprüfung). Hier müssen wird zwischen pflicht und optionalen Eingaben unterscheiden (3. und 4. sind optional).
  • (pflicht) Wenn das Feld/Variable NULL enthält __oder__ nicht auf den regulären Ausdruck passt, speicher den Namen/Beschreibung in das $form_error_fields-Array.
  • (optional) Wenn das Feld/Variable __nicht__ NULL ist __UND__ nicht auf den RegEx passt, speicher den Namen/Beschreibung in das $form_error_fields-Array.
Wenn das Array $form_error_fields nun leer ist wurden die Felder korrekt ausgefüllt und die Email kann verschickt werden.
Wenn sich jedoch ein oder mehrere Elemente in dem Array befinden bedeutet dies, das eine Eingabe nicht unseren Vorgaben entspricht und die Email nicht versandt werden soll.
Anstelle dessen geben wir die Elemente aus dem Array aus um den Benutzer auf seine "unerwünschten" Eingaben aufmerksam zu machen. Hier kommt auch der PHP-Code innerhalb des Formulars zum Einsatz, das die gemachten Eingaben wieder anzeigt um dem Benutzer unnötiges wiederholen zu ersparen - was eine schnell Korrektur der Eingaben erlaubt.

Sooo, das war jetzt alles.
Schönen Gruß
~Arano

(Wenn ich das mal so anmerken darf, das "Tutorial" das du verwendet/angegeben hast ist ja mal überhaupt nicht zu gebrauchen oO)

__Edit:__
Vielleicht könnte mal eine(r) der Moderator(en|innen) einen Link von dem "Tutorial"-Thread zu diesem hier setzten um andere Leser gleich darauf aufmerksam zu machen !?

__Edit2:__
Mir ist gerade mal aufgefallen, das die Anzeige des Quelltextes in dem separatem Popup nicht richtig funktioniert !
Ich habe in meinem Quelltext ja unter anderem "</textarea>" stehen, dieses schließt allerdings die Textarea in der mit mein Quelltext angezeigt wird so das alles folgende __abgeschnitten__ wird !
Test:
01.
 bla bla bla </textarea><script style="text/javascript"
02.
  <!-- 
03.
    alert("XSS-Attack"); 
04.
  --> 
05.
</script>
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
E-Mail
Plesk 17 - E-Mail zurückgestellt in Warteschlange (3)

Frage von ZeldaFreak zum Thema E-Mail ...

Microsoft Office
Formular Autofill - Infopath (1)

Frage von TlBERlUS zum Thema Microsoft Office ...

E-Mail
gelöst Mail Spam fremde IP (10)

Frage von BerndP zum Thema E-Mail ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (9)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...