login  Naam:   Wachtwoord: 
Registreer je!
 Forum

verzenden naar email

Offline thomaske - 13/04/2006 22:33 (laatste wijziging 13/04/2006 22:34)
Avatar van thomaskeHTML interesse hallo

Ik ben nog maar net begonnen met php te leren.Ik heb mijn eerste scriptje gemaakt en het is een mail formulier.
Maar alles werkt (volgens mij).
Het enige probleem is het wordt nooit verstuurd naar mail emailadres.
  1. <html>
  2. <head>
  3. <title>Untitled Document</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  5. <style type="text/css">
  6. <!--
  7. .style1 {color: #FFFFFF}
  8. .style2 {font-family: Arial, Helvetica, sans-serif}
  9. body,td,th {
  10. color: #FFFFFF;
  11. }
  12. body {
  13. background-color: #999999;
  14. }
  15. -->
  16. </style>
  17. </head>
  18.  
  19. <body class="style2">
  20. <form method="post" action="<? $PHP_SELF; ?>">
  21. <table width="293" height="216" border="0">
  22. <tr>
  23. <th class="style1" scope="col"><span class="style1">voornaam:</span></th>
  24. <th scope="col"><input type="text" name="naam" width="200"></th>
  25. </tr>
  26. <tr>
  27. <th class="style1" scope="col"><span class="style1">achternaam:</span></th>
  28. <th scope="col"><input type="text" name="achternaam" width="200"></th>
  29. </tr>
  30. <tr>
  31. <th class="style1" scope="col"><span class="style1">Emailadres:</span></th>
  32. <th scope="col"><input type="text" name="email" width="200"></th>
  33. </tr>
  34. <tr>
  35. <th width="83" height="134" class="style1" scope="col"><span class="style1">bericht:</span></th>
  36. <th width="200" scope="col"><p><br>
  37. <textarea name="bericht" width="200" height="150"></textarea>
  38. </p>
  39. <p>
  40. <input name="versturen" type="submit" value="versturen">
  41. </p></th>
  42. </tr>
  43. </table><hr>
  44. </form>
  45.  
  46. <?php
  47. if (isset($_POST["naam"]) and isset($_POST["achternaam"]) and $_POST["bericht"]) {
  48.  
  49. if ($_POST["naam"]=="") {
  50. echo "Uw voornaam is niet ingevuld!<br>";
  51. }
  52. else {
  53. echo"Uw voornaam is correct ingevuld!<br>";
  54. }
  55. if ($_POST["achternaam"]=="") {
  56. echo "Uw achternaam is niet correct ingevuld!<br>";
  57. }
  58. else {
  59. echo "Uw achternaam is correct ingevuld!<br>";
  60. }
  61. if ($_POST["email"]=="") {
  62. echo "Uw email is niet correct ingevuld!<br>";
  63. }
  64. else {
  65. echo "uw email is correct ingevuld!<br>";
  66. }
  67. if ($_POST["bericht"]=="") {
  68. echo "U hebt geen bericht ingevuld!<br>";
  69. }
  70. else {
  71. echo "Uw bericht is correct ingevuld!<br>";
  72. }
  73. if ($_POST["versturen"]=="") {
  74. echo "uw bericht kan niet worden verzonden!";
  75. }
  76. else {
  77. echo "uw bericht wordt verzonden!";
  78. }
  79. }
  80.  
  81. $mailto = "mw-thomas@hotmail.com";
  82. $header = "From: ".$_POST['naam']." ".$_POST['achternaam']." ".$_POST['email']." <".$_POST['bericht'].">";
  83. mail("naam","email","bericht","From:naam");
  84. ?>
  85.  
  86. </body>
  87. </html>


Ik hoop dat iemand mij kan helpen.

MVG thomas

7 antwoorden

Gesponsorde links
Offline Rens - 13/04/2006 22:47
Avatar van Rens Gouden medaille

Crew algemeen
Ten eerste, regel 22:
  1. <form method="post" action="<? $PHP_SELF; ?>">

Daar gebruik je geen superglobals, terwijl je dat voor de rest wel doet.
En je echoot het niet, dus heb je niks vaan dat $PHP_SELF stukje.
  1. <form method="post" action="<?=$_SERVER['PHP_SELF'];?>">

Het <?=$_SERVER['PHP_SELF'];?> stukje, is een verkorte syntax voor:
  1. <?PHP echo $_SERVER['PHP_SELF']; ?>


En dan, als jij bij mail die gegevens zo ook precies gebruikt, is het niet gek dat het niet werkt.
En die header is ook maar raar...
Regel 83, 84 en 85:
  1. $mailto = "mw-thomas@hotmail.com";
  2. $header = "From: ".$_POST['naam']." ".$_POST['achternaam']." ".$_POST['email']." <".$_POST['bericht'].">";
  3. mail("naam","email","bericht","From:naam");

Veranderen in:
  1. $sBericht = htmlentities($_POST['bericht']);
  2. mail("mw-thomas@hotmail.com", "Email", $sBericht);
  3. ?>
Offline sayanora - 13/04/2006 22:51 (laatste wijziging 13/04/2006 22:52)
Avatar van sayanora Nieuw lid mail("naam","email","bericht","From:naam");

moet

mail($mailto, "onderwerp", $_POST['bericht'], $header);

zijn ;)

en om te testen of velden leeg zijn moet je bv. empty($_POST['blaat']) doen ;)

en bij submit knoppen moet je isset() gebruiken en niet == ""

ik zou nog eens een goeie tut lezen als ik jou was, zitten veeel fouten in.

*****edit*****
die voor me was me een paar seconden voor:P
Offline Rens - 13/04/2006 22:52 (laatste wijziging 13/04/2006 22:53)
Avatar van Rens Gouden medaille

Crew algemeen
Ik zou eigenlijk geen eens IsSet gebruiken om te kijken of een formulier gesubmit word.
  1. <?PHP
  2. if($_SERVER['REQUEST_METHOD'] == "POST")
  3. {
  4. // het formulier is gesubmit
  5. } else
  6. {
  7. // het formulier
  8. }
  9. ?>


Paar seconden?
Wat dacht je van 4 minuten? 
Offline thomaske - 13/04/2006 22:57
Avatar van thomaske HTML interesse dankje
Offline Stijn - 13/04/2006 22:58 (laatste wijziging 13/04/2006 22:59)
Avatar van Stijn PHP expert Er wordt natuurlijk niets verzonden want de parameters zijn verkeerd van de mail()-function. Even wat uitleggen hé aangezien je beginner bent.

Ik pas me op je huidig script nu hé. Het emailadres waar de hele boel moet verstuurt worden , staat in de variable $mailto. Dan kan je al één parameter invullen van je mail()-functie.

  1. <?
  2. mail($mailto , ....);
  3. ?>


Ten tweede heb je je onderwerp nodig. Dit heb je wel goed gedaan. Dus je 2e parameter is al ingesteld.

  1. <?
  2. mail($mailto , "email" , ...);
  3. ?>


Ten derde heb je je bericht. Ik zie dat je de naam, achternaam en emailadres vraagt. Dit kan je bijvoorbeeld in een variable $bericht stoppen met HTML tags om wat uiterlijk te hebben aan je emailbericht. Bijvoorbeeld:

  1. <?
  2. $bericht = "Dit bericht werd verstuurd door " . $_POST['naam'] . " ". $_POST['achternaam'] . "<br /><br /> Dit is zijn e-mailadres, klik erop om hem een bericht terug te sturen: <a href=\"mailto:" . $_POST['email'] ."\">" . $_POST['email'] . "</a>";
  3.  
  4. //nu kan je dit instellen als 3e parameter.
  5. mail($mailto , "email" , $bericht , ....);
  6. ?>


Nu als laatste parameter: de headers. Je kent de From header blijkbaar maar je ken zijn doel blijkbaar niet. From toont in het emailbericht van wie dit bericht komt. Dit kan je héél makkelijk instellen.
Maar eerst dit! Je hebt nu HTML gebruikt in je $bericht. Wanneer je headers niet invult, komt er geen enters en geen link! Dus daar stellen we ook headers voor in (zie script hieronder):

  1. <?
  2. $bericht = "Dit bericht werd verstuurd door " . $_POST['naam'] . " ". $_POST['achternaam'] . "<br /><br /> Dit is zijn e-mailadres, klik erop om hem een bericht terug te sturen: <a href=\"mailto:" . $_POST['email'] ."\">" . $_POST['email'] . "</a>";
  3.  
  4. //headers voor de HTML te laten werken
  5. $headers = "MIME-Version: 1.0\r\n";
  6. $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  7.  
  8. //je From header
  9. $headers .= "From: " . $_POST['naam'] . " <" . $_POST['email'] . ">\r\n";
  10.  
  11. mail($mailto , "email" , $bericht , $headers);
  12. ?>


Hopelijk ben je wat met me uitleg. Anders kan je de documentatie op PHP.net eens doornemen -> PHP.net: mail

groeten, stijn

[edit]

lOoOl , ik wist het 
Offline Rens - 13/04/2006 22:59
Avatar van Rens Gouden medaille

Crew algemeen
Ik denk dat de volgende tutorials ook nog wel handig kunnen zijn:
http://www.site...amp;id=138
http://www.site...&id=44

"Verwerken van formulieren" en "Mail-functie".
Offline XeoN - 13/04/2006 23:49
Avatar van XeoN HTML interesse
  1. <form method="post">
  2. <font size="5">Contact</font>
  3. Naam:<br />
  4. <input type="text" name="naam" size="36" /><br />
  5. <br />
  6. E-mail adres:<br />
  7. <input type="text" name="email" size="36" /><br />
  8. Onderwerp:<br />
  9. <select size="1" name="onderwerp">
  10. <option selected value="1">Vraag</option>
  11. <option value="2">Idee</option>
  12. <option value="3">Tip</option>
  13. <option value="4">Opmerking</option>
  14. <option value="5">Anders</option>
  15. </select><br />
  16. <br />
  17. Bericht:<br />
  18. <textarea rows="4" name="opmerking" cols="30"></textarea><br />
  19. <input type="submit" value="Verzenden" name="verzenden" />
  20. <input type="reset" value="Opnieuw" name="reset" />
  21. </form>
  22.  
  23. <?php
  24.  
  25. $sEmail = "mw-thomas@hotmail.com";
  26.  
  27. if ( isset ( $_POST['verzenden'] ) && $_SERVER['REQUEST_METHOD'] == 'POST' ){
  28.  
  29. if ( trim ( $_POST['naam'] ) != '' && trim ( $_POST['email'] ) != '' && trim ( $_POST['onderwerp'] ) != '' && trim ( $_POST['opmerking'] ) == '')
  30. {
  31. mail($sEmail, $_POST['onderwerp'], $_POST['opmerking']);
  32. echo 'De mail is verstuurd en er zal zo snel mogelijk op gereageerd worden.';
  33. echo '<META HTTP-EQUIV="REFRESH" CONTENT="2; URL=urlnaklik">';
  34. }
  35. else
  36. {
  37. echo"U heeft iets niet ingevult.";
  38. }
  39. }
  40. ?>

Deze had ik half gemaakt :'). Misschien dat hij ook handig voor jou is.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.282s