Posted By

neshumah on 02/11/10


Tagged

form mail-validation form-process


Versions (?)

Who likes this?

2 people have marked this snippet as a favorite

tapdrup
satsuma


Contact From


 / Published in: PHP
 

Se encarga de recibir una forma y enviarla

  1. <?php
  2. // *** Spam Schutz
  3. // ***************************************************************************
  4.  
  5. function check_email($email) // Checkt, ob Emails gültig sind
  6. {
  7. $nonascii = "\x80-\xff"; # Non-ASCII-Chars are not allowed
  8.  
  9. $nqtext = "[^\\\\$nonascii\015\012\"]";
  10. $qchar = "\\\\[^$nonascii]";
  11.  
  12. $protocol = '(?:mailto:)';
  13.  
  14. $normuser = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';
  15. $quotedstring = "\"(?:$nqtext|$qchar)+\"";
  16. $user_part = "(?:$normuser|$quotedstring)";
  17.  
  18. $dom_mainpart = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';
  19. $dom_subpart = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';
  20. $dom_tldpart = '[a-zA-Z]{2,5}';
  21. $domain_part = "$dom_subpart$dom_mainpart$dom_tldpart";
  22.  
  23. $regex = "$protocol?$user_part\@$domain_part";
  24. // RegEx end
  25.  
  26. return preg_match("/^$regex$/",$email);
  27. }
  28.  
  29. if(isset($_POST['Senden']))
  30. {
  31. if (isset($_SESSION['uid']) && isset($_POST['uid']) && $_SESSION['uid'] == $_POST['uid'])
  32. {
  33. // alles ok... mail verschicken...
  34. unset($_SESSION['uid']);
  35.  
  36. foreach($_POST as $key=>$value) $_POST[$key]=trim(strip_tags($value)); // Leerzeichen und HTML löschen
  37. foreach($_POST as $key=>$value) $_POST[$key]=preg_replace("/
  38. |\r|\n/", "\n", $value); //
  39. und \r ändern in \n
  40.  
  41. if((!empty($_POST['name'])) && (!empty($_POST['nachricht'])))
  42. {
  43.  
  44. $name=utf8_decode($_POST['name']);
  45. if(check_email($_POST['email']))
  46. {
  47. $email=$_POST['email'];
  48. }
  49. else
  50. {
  51. $email="";
  52. }
  53. $betreff=$_POST['betreff'];
  54. $nachricht=$_POST['nachricht'];
  55.  
  56. // === BCC Spam check =======================================================
  57. if
  58. (
  59. eregi("\r",$email) || eregi("\n",$email) || eregi("
  60. ",$email)
  61. || eregi("\r",$name) || eregi("\n",$name) || eregi("
  62. ",$name)
  63. )
  64. {
  65. die('Get lost');
  66. }
  67.  
  68. foreach($_POST as $k=>$v)
  69. {
  70. if(eregi("bcc:",$v)){
  71. die('Get lost');
  72. }
  73. if(eregi("MIME-Version:",$v)){
  74. die('Get lost');
  75. }
  76. if(eregi("Content-Type:",$v)){
  77. die('Get lost');
  78. }
  79. }
  80. // === BCC Spam check end =======================================================
  81.  
  82. $message="Ballettmodel Eva | Kontaktformular\n"
  83. ."#################################################################\n"
  84. ."\n"
  85. ."Es wurde eine neue Nachricht über das Kontaktformular geschrieben.\n"
  86. ."\n"
  87. ."Von: $name, Email: $email\n\n"
  88. ."Betreff: $betreff\n\n"
  89. ."Die Nachricht lautet:\n"
  90. ."\n"
  91. ."$nachricht";
  92. $message=utf8_decode($message);
  93.  
  94. $empfaenger="[email protected]"; // Empfänger der EMail - kann geändert werden
  95. $absender=$name." <".$email.">"; // Absender, wird automatisch erstellt
  96. $titel="$betreff | Kontaktformular"; // Titel/Betreff der Email - kann geändert werden
  97. $extheader = "From: $absender\n" // Nötige HEADER-Angaben
  98. ."Content-Type: text/plain; charset=\"iso-8859-1\"\n"
  99. ."Content-Transfer-Encoding: 8bit\n"
  100. ."Return-Path: $empfaenger\n"
  101. ."X-Mailer: PHP ".phpversion()." / PHP Mail";
  102. mail("$empfaenger","$titel","$message","$extheader");
  103.  
  104. $fehler='<p style="color: #0c0; font-weight: bold;">Vielen Dank, die Nachricht wurde erfolgreich verschickt.</p>';
  105. }
  106. else
  107. {
  108. $fehler='<p style="color: #f00; font-weight: bold;">! Sie haben nicht alle nötigen Felder ausgefüllt <em>(Pflichtfelder)</em></p>';
  109. }
  110. }
  111. else
  112. {
  113. echo "Es ist ein Fehler aufgetreten";
  114. }
  115. }
  116.  
  117. // UID erzeugen für den Spamschutz
  118. $_SESSION['uid'] = md5(microtime()*rand());
  119.  
  120. echo '<?xml version="1.0" encoding="UTF-8"?>';
  121. ?>
  122.  
  123. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  124. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
  125. <head>
  126. </head>
  127. <body id="kontakt">
  128.  
  129. <div id="inhaltbox">
  130. <div id="inhalt">
  131. <h1>Kontakt</h1>
  132. <form action="/kontakt/" method="post" id="kontaktform">
  133. <?php if(isset($fehler)) echo $fehler."\n"; ?>
  134. <p><label for="name"><b>Ihr Name:</b> <em>(Pflichtfeld)</em></label><br />
  135. <input type="text" id="name" name="name" size="30" tabindex="1" /></p>
  136. <p><label for="email"><b>Ihre Email-Adresse:</b></label><br />
  137. <input type="text" id="email" name="email" size="30" tabindex="2" /></p>
  138. <p><label for="betreff"><b>Was ist Ihr Anliegen?</b></label><br />
  139. <select name="betreff" id="betreff" tabindex="3">
  140. <option value="Allgemeines" selected="selected">Allgemeines</option>
  141. <option value="Jobangebot">Ein Jobangebot vorschlagen</option>
  142. <option value="Problem">Probleme mit meiner Seite</option>
  143. </select></p>
  144. <p><label for="nachricht"><b>Ihre Nachricht an mich:</b> <em>(Pflichtfeld)</em></label><br />
  145. <textarea id="nachricht" name="nachricht" rows="8" cols="40" tabindex="4"></textarea></p>
  146. <p><label for="Senden"><input id="Senden" name="Senden" value="Abschicken" type="submit" tabindex="5" /><input type="hidden" name="uid" value="<?php echo $_SESSION['uid']; ?>" /></label></p>
  147. </form>
  148. </div>
  149. </div>
  150.  
  151. </body>
  152. </html>

Report this snippet  

You need to login to post a comment.