login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Contact formulieren > Form Mail v.40

Form Mail v.40

Auteur: skyce - 07 december 2006 - 12:41 - Gekeurd door: Wijnand - Hits: 24681 - Aantal punten: 4.50 (5 stemmen)





Form mail 4.0
-----------------------------------------------------------

Een simpel mail formulier voor de beginnende php'er. Pas de
variabele aan naar wens en je hebt al een werkend contact
formulier.

Als je gaat testen moet je wel je goede email adres invullen
anders komt de mail niet aan. En voor een bevestigings
mail geldt natuurlijk hetzelfde.

Als je van plan bent dit script te gaan afkraken, go ahead,
maar zet er wel bij waarom het slecht is en niet dat er al
80.000 van bestaan. Dr zullen vast wel alternatieven zijn
voor een contactformulier, maar ik heb er hier maar weinig
gezien die nog steeds werken.

En als er fouten zijn graag in een reactie op dit script.

Have fun!

SkYcE



Update 07-12-2006
---------------------------------------
- vernieuwde code
- antiflood optie
- optie voor blokkeren van ipadressen
---------------------------------------

Update 29-11-2006
---------------------------------------
- fout bij bevestigingsmail opgelost
---------------------------------------

Update
---------------------------------------
- betere kortere code
- voorbeeld voor textfield, checkbox, selectbox en radiobutton
---------------------------------------

Update
---------------------------------------
- paar kleine bugs eruit
---------------------------------------

Update
---------------------------------------
- optie voor bevestigingsmail
- iets betere, simpelere en overzichtelijkere code
---------------------------------------

Update
---------------------------------------
- moest dingen veranderen vanwege aanpassingen op mijn server
- iets betere code
---------------------------------------

Code:
  1. <?php
  2. /******************************
  3. * Script: Form Mail *
  4. * Versie: 4.0 *
  5. * Author: SkYcE *
  6. * Released: 07-12-2006 *
  7. ******************************/
  8.  
  9. //Set sessie voor flood optie
  10.  
  11. /*
  12. ** Variabelen instellen
  13. */
  14.  
  15. // Naam voor als afzender van het bevestigingsmailtje
  16. $var_name = "je naam";
  17. // Het mail adres waarnaar de data verstuurd moet worden en afzender adres
  18. $var_email = "je@email.nl";
  19. // Bevestigingsmail naar de verstuurder aanzetten (true = aan / false = uit)
  20. $var_confirm = true;
  21. // Om flooden te voorkomen (true = aan / false = uit)
  22. $var_noflood = true;
  23. //Bericht wat een bezoeker te zien krijgt als er sprake is van flooden
  24. $var_flood_msg = "U bent aan het flooden!";
  25. //Aantal flood seconden dat het formulier buiten gebruik moet zijn na het versturen van een bericht
  26. $var_flood_sec = 20;
  27. // Geblokkeerde ip adressen, nieuw ip adres toevoegen is nieuwe waarde in de array
  28. $var_ban_ips = array('255.255.255.0');
  29. // Bericht wat een bezoeker te zien krijgt indien diegene geblokkeerd is
  30. $var_ban_msg = "U bent geblokkeerd van het versturen van het contact formulier.";
  31.  
  32. /*
  33. ** Hieronder niks veranderen, tenzij je weet wat je doet
  34. */
  35. //Functie voor ipadres verkrijgen
  36. function get_ip () {
  37. if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
  38. $ipadres = $_SERVER['HTTP_X_FORWARDED_FOR'];
  39. } elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
  40. $ipadres = $_SERVER['HTTP_CLIENT_IP'];
  41. } else {
  42. $ipadres = $_SERVER['REMOTE_ADDR'];
  43. }
  44.  
  45. return $ipadres;
  46. }
  47.  
  48. //Host verkrijgen
  49. $hostmask = gethostbyaddr(get_ip());
  50. // Formulier weergeven
  51. $form_view = true;
  52. //Formulier versturen, als er iets misgaat word $ok = false
  53. $ok = true;
  54. // Bestandsnaam verkrijgen
  55. $filename = basename($_SERVER['PHP_SELF']);
  56. // Errors
  57. $error = '';
  58.  
  59. if($_SERVER['REQUEST_METHOD'] == 'POST') {
  60. //Validate form
  61. if(!$_POST['geslacht']) {
  62. $ok = false;
  63. $error .= '- Er is geen geslacht ingevuld<br />';
  64. }
  65. if(!trim($_POST['naam'])) {
  66. $ok = false;
  67. $error .= '- Er is geen naam ingevuld<br />';
  68. }
  69. if(!eregi("[A-Za-z0-9_-]+([.]{1}[A-Za-z0-9_-]+)*@[A-Za-z0-9-]+([.]{1}[A-Za-z0-9-]+)+", $_POST['email'])) {
  70. $ok = false;
  71. $error .= '- Er is geen geldig e-mailadres ingevuld<br />';
  72. }
  73. if(!$_POST['onderwerp']) {
  74. $ok = false;
  75. $error .= '- Er is geen onderwerp ingevuld<br />';
  76. }
  77. if(!trim($_POST['bericht'])) {
  78. $ok = false;
  79. $error .= '- Er is geen bericht ingevuld<br />';
  80. }
  81. if($_POST['hob_sport'] != "ja" AND $_POST['hob_internet'] != "ja" AND $_POST['hob_uitgaan'] != "ja") {
  82. $ok = false;
  83. $error .= '- Er is geen hobby gekozen<br />';
  84. }
  85.  
  86. // E-mail naar $var_email (webmaster)
  87. $msg_2_admin = "
  88. Geslacht: ".$_POST['geslacht']."
  89. Naam: ".$_POST['naam']."
  90. Email: ".$_POST['email']."
  91. Onderwerp: ".$_POST['onderwerp']."
  92. ======================================================================
  93. Bericht:
  94.  
  95. ".$_POST['bericht']."
  96. ======================================================================
  97. Hobby's:
  98.  
  99. Sport: ".$_POST['hob_sport']."
  100. Internet: ".$_POST['hob_internet']."
  101. Uitgaan: ".$_POST['hob_uitgaan']."
  102. ======================================================================
  103. Note: ".$_POST['naam']." stuurde deze email op ".date('d-m-Y')." om ".date('H:i').".
  104.  
  105. Het IP adres van ".$_POST['naam']." is: ".get_ip()."
  106. Het hostadres van ".$_POST['naam']." is: ".$hostmask;
  107.  
  108. // E-mail naar $_POST['email'] (poster)
  109. $msg_2_poster = "Beste ".$_POST['naam'].",
  110.  
  111. Bedankt voor het invullen van het formulier. Je hebt het formulier
  112. ingevuld op ".date('d-m-Y')." om ".date('H:i').". Vanaf ".get_ip().".
  113. ======================================================================
  114. Geslacht: ".$_POST['geslacht']."
  115. Naam: ".$_POST['naam']."
  116. Email: ".$_POST['email']."
  117. Onderwerp: ".$_POST['onderwerp']."
  118. ======================================================================
  119. Bericht:
  120.  
  121. ".$_POST['bericht']."
  122. ======================================================================
  123. Hobby's:
  124.  
  125. Sport: ".$_POST['hob_sport']."
  126. Internet: ".$_POST['hob_internet']."
  127. Uitgaan: ".$_POST['hob_uitgaan'];
  128.  
  129. if(in_array(get_ip(),$var_ban_ips)) {
  130. echo $var_ban_msg;
  131. $form_view = false;
  132. } elseif ($var_noflood == true && (time()-$_SESSION["antiflood"]) <= $var_flood_sec) {
  133. echo $var_flood_msg;
  134. $form_view = false;
  135. } elseif ($ok == true) {
  136. @$send = mail($var_email,
  137. "Contact: ".$_POST['onderwerp'],
  138. $msg_2_admin,
  139. "From: ".$_POST['naam']."<".$_POST['email'].">");
  140.  
  141. if($send == 1) {
  142. if($var_confirm == true){
  143. mail($_POST['email'],
  144. "Bevestiging Contact: ".$_POST['onderwerp'],
  145. $msg_2_poster,
  146. "From: ".$var_name."<".$var_email.">");
  147. }
  148.  
  149. echo'Beste '.$_POST['naam'].', uw bericht is verzonden, bedankt voor uw reactie.';
  150.  
  151. if($var_confirm == true){
  152. echo'<br /><br />Er is een bevestigingsmail onderweg met wat u heeft ingevuld.';
  153. }
  154. }else{
  155. echo'Beste '.$_POST['naam'].', uw bericht is helaas niet verzonden.<br /><br />
  156. Er is een fout opgetreden bij het verzenden. Wij zullen proberen het probleem zo snel mogelijk
  157. te verhelpen.<br /><br />
  158.  
  159. Mocht dit probleem na enkele dagen niet verholpen zijn,neem dan contact op met de
  160. <a href="mailto:'.$var_email.'">Webmaster</a><br /><br />
  161.  
  162. Bedankt voor uw medewerking.';
  163. }
  164.  
  165. $form_view = false;
  166.  
  167. $_SESSION["antiflood"] = time();
  168. }
  169. }
  170.  
  171. /*
  172. ** Formulier
  173. */
  174. if($form_view == true) {
  175. echo '
  176. <html>
  177. <head>
  178. <title>Form Mail v4.0 by SkYcE</title>
  179. <style type="text/css">
  180. body {
  181. font-family: Verdana;
  182. font-size:12px;
  183. }
  184. td {
  185. font-family: Verdana;
  186. font-size:12px;
  187. }
  188. </style>
  189. </head>
  190.  
  191. <body>';
  192.  
  193. if($error != '') {
  194. echo '<font style="color:#FF0000;"><b>'.$error.'</b></font><br />';
  195. }
  196.  
  197. echo '<form method="POST" action="'.$filename.'" style="border:0px; margin:0px; padding:0px;">
  198. <table width="55%" cellspacing="0" cellpadding="5">
  199. <tr>
  200. <td align="right"><b>Geslacht:</b></td>
  201. <td>
  202. <input type="radio" name="geslacht" value="Man"'.(isset($_POST['geslacht']) && $_POST['geslacht'] == "Man" ? ' checked' : '').'> Man
  203. <input type="radio" name="geslacht" value="Vrouw"'.(isset($_POST['geslacht']) && $_POST['geslacht'] == "Vrouw" ? ' checked' : '').'> Vrouw
  204. </td>
  205. </tr>
  206. <tr>
  207. <td align="right"><b>Naam:</b></td>
  208. <td><input type="text" name="naam" size="36" maxlength="36" value="'.(isset($_POST['naam']) ? $_POST['naam'] : '').'"></td>
  209. </tr>
  210. <tr>
  211. <td align="right"><b>E-mailadres:</b></td>
  212. <td><input type="text" name="email" size="36" maxlength="36" value="'.(isset($_POST['email']) ? $_POST['email'] : '').'"></td>
  213. </tr>
  214. <tr>
  215. <td align="right"><b>Onderwerp:</b></td>
  216. <td><select name="onderwerp">
  217. <option value="">Selecteer...</option>
  218. <option value="Onderwerp 1"'.(isset($_POST['onderwerp']) && $_POST['onderwerp'] == 'Onderwerp 1' ? ' selected' : '').'>Onderwerp 1</option>
  219. <option value="Onderwerp 2"'.(isset($_POST['onderwerp']) && $_POST['onderwerp'] == 'Onderwerp 2' ? ' selected' : '').'>Onderwerp 2</option>
  220. <option value="Onderwerp 3"'.(isset($_POST['onderwerp']) && $_POST['onderwerp'] == 'Onderwerp 3' ? ' selected' : '').'>Onderwerp 3</option>
  221. <option value="Onderwerp 4"'.(isset($_POST['onderwerp']) && $_POST['onderwerp'] == 'Onderwerp 4' ? ' selected' : '').'>Onderwerp 4</option>
  222. <option value="Onderwerp 5"'.(isset($_POST['onderwerp']) && $_POST['onderwerp'] == 'Onderwerp 5' ? ' selected' : '').'>Onderwerp 5</option>
  223. </select></td>
  224. </tr>
  225. <tr>
  226. <td align="right" valign="top"><b>Bericht:</b></td>
  227. <td><textarea rows="8" cols="40" name="bericht" style="overflow:auto;">'.(isset($_POST['bericht']) ? $_POST['bericht'] : '').'</textarea></td>
  228. </tr>
  229. <tr>
  230. <td align="right" valign="top"><b>Hobby\'s:</b></td>
  231. <td>
  232. <input type="checkbox" name="hob_sport" value="ja"'.(isset($_POST['hob_sport']) && $_POST['hob_sport'] == 'ja' ? ' checked' : '').'> Sport<br>
  233. <input type="checkbox" name="hob_internet" value="ja"'.(isset($_POST['hob_internet']) && $_POST['hob_internet'] == 'ja' ? ' checked' : '').'> Internet<br>
  234. <input type="checkbox" name="hob_uitgaan" value="ja"'.(isset($_POST['hob_uitgaan']) && $_POST['hob_uitgaan'] == 'ja' ? ' checked' : '').'> Uitgaan
  235. </td>
  236. </tr>
  237. <tr>
  238. <td>&nbsp;</td>
  239. <td><input type="submit" name="submit" value="Versturen"></td>
  240. </tr>
  241. </table>
  242. </form>
  243. </body>
  244. </html>';
  245. }
  246. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (18)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.047s