login  Naam:   Wachtwoord: 
Registreer je!
 Forum

formulier

Offline leendertW - 19/01/2005 12:02 (laatste wijziging 19/01/2005 12:06)
Avatar van leendertWPHP beginner Ik heb dit formuliertje maar er zit een fout in, maar die kan ik zelf niet ontdekken

dit is de code
  1. <?php
  2. if(isset($_POST['submit'])) {
  3.  
  4. $sName = $_POST['sNaam'];
  5.  
  6. $sMail = $_POST['sMail'];
  7.  
  8. $sBericht = $_POST['sBericht'];
  9. $sBericht = nl2br($sBericht);
  10.  
  11. if(strlen($sNaam) < 4) $sError = "Geen correcte naam ingevoerd<br>";
  12.  
  13. if(strlen($_POST['sMail']) < 4 || !ereg('@',$_POST['sMail']) || !ereg('.',$_POST['sMail'])) $sError = "Geen correcte emailingevoerd<br>";
  14.  
  15. if(strlen($sBericht) < 4) $sError .= "Geen correct bericht ingevoerd<br>";
  16.  
  17. if($sError) echo "de opdracht werd niet uitgevoerd vanwege de volgende redenen<br>" . $sError . "Kies terug en probeer het nogmaals";
  18.  
  19. if(!isset($sError))
  20. {
  21. $sHeader = "MIME-Version: 1.0\r\n";
  22. $sHeader .= "Content-type: text/html; charset=iso-8859-1\r\n";
  23. $sHeader .= "To: ".$sNaam." <".$sMail.">\r\n";
  24. $sHeader .= "From: ".$_POST['sNaam']." <".$_POST['sMail'].">\r\n";
  25. $sNaar = 'hierje@emailadres.nl';
  26. $sOnderwerp = 'hierhetonderwerp';
  27. $sBody = "Er is een contactformulier vanaf je website verstuurd. de volgende gegevens werden ingevoerd:\n\rNaam: " . $Snaam . "\n\rE-mailadres: " . $Smail ."\n\rBericht: " . $Sbericht;
  28. $sControleer = mail($_POST['sNaar'],$_POST['sOnderwerp'],$sBody, sHeader);
  29.  
  30. if($sControleer) echo "de E-mail is correct verzonden!";
  31.  
  32. if(!$sControleer) echo "de E-mail is niet verzonden! Klik <A href='javascript:history.go(-1);'> hier </a> om terug te gaan naar het formulier</A>";
  33. }
  34. }
  35. else {
  36. ?>
  37. <form name="contact" method="POST" action="<?=$_Server['PHP_SELF']" ?>">
  38. <input name="sNaam" type="text" value="Vul hier je naam in"><br>
  39. <input name="sMail" type="text"value="voer hier je E-mailadres in"><br>
  40. <textarea name="sBericht">Voer hier je bericht in</textarea><br>
  41. <input type="submit" name="submit" value="Verzenden">
  42. </form>
  43. <?php
  44. }
  45. ?>


en dit is de fout:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in c:\program files\easyphp1-7\www\mail.php on line 37

10 antwoorden

Gesponsorde links
Offline Metalhead - 19/01/2005 12:06 (laatste wijziging 19/01/2005 12:11)
Avatar van Metalhead HTML gevorderde edit; sorry, verkeerde opmerking 
Offline Thomas - 19/01/2005 12:12 (laatste wijziging 19/01/2005 12:13)
Avatar van Thomas Moderator Wat is regel 37 ? Ook handig om te weten...

Mja, als je fatsoenlijk inspringt in je code zie je dit soort fouten meteen.

Ik zou trouwens een array gebruiken voor $sError...
Dan kun je kijken of je formulier goed is ingevuld met if(sizeof($error_array) == 0) en kun je je fouten netjes afdrukken met een for(each)-lus.
Offline leendertW - 19/01/2005 12:13
Avatar van leendertW PHP beginner Ja ik heb de fout al dankzij Henri. Bij action stond een " te veel.:S
Fangorn: Ik zal het eens gaan proberen.
Offline leendertW - 19/01/2005 15:00 (laatste wijziging 19/01/2005 15:01)
Avatar van leendertW PHP beginner Nu heb ik het formulier helemaal veranderd maar nu krijg ik dit als ik iets niet invul:

Array
Klik hier om terug te gaan naar het formulier
U heeft uw naam niet ingevult
Klik hier om terug te gaan naar het formulier

dit is het script:

  1. <html>
  2. <head>
  3. <title>Mail scriptje </title>
  4. </head>
  5. <body>
  6. <?php
  7. if(isset($_POST['submit'])) {
  8.  
  9. $sName = $_POST['sNaam'];
  10. $sMail = $_POST['sMail'];
  11. $sAdres = $_POST['sAdres'];
  12. $sWebsite = $_POST['sWebsite'];
  13. $sBericht = $_POST['sBericht'];
  14. $sBericht = nl2br($sBericht);
  15.  
  16. $sError[] = array();
  17.  
  18. if ($_POST['sNaam'] == '') {
  19. $sError[] = 'U heeft uw naam niet ingevult';
  20. }
  21. elseif($_POST['sAdres'] == '') {
  22. $sError[] = 'U heeft uw adres niet ingevult';
  23. }
  24. elseif($_POST['sWebsite'] == 'http://') {
  25. $sError[] = 'U heeft uw website niet ingevult';
  26. }
  27.  
  28. elseif(empty($_POST['sMail']) || !eregi('@',$_POST['sMail']) || !eregi('.',$_POST['sMail']) || eregi(' ',$_POST['sMail'])) {
  29. $sError[] = 'Uw heeft uw emailadres niet ingevult';
  30. }
  31. elseif($_POST['sBericht'] == '') {
  32. $sError[] = 'U heeft het bericht niet ingevult';
  33. }
  34. if (count($sError) == 0)
  35. {
  36. $sHeader = "To: ".$sNaam." <".$sMail.">\r\n";
  37. $sHeader = "From: ".$_POST['sNaam']." <".$_POST['sMail'].">\r\n";
  38. $sNaar = ' ';
  39. $sOnderwerp = 'Berichtje van de website';
  40. $sBody = "Er is op ".$sDatum." een contactformulier vanaf je website verstuurd. de volgende gegevens werden ingevoerd:\n\rIp adres: " . $iIp . "\n\rNaam: " . $sNaam . "\n\rAdres: " . $sAdres . "\n\rWebsite: " . $sWebsite . "\n\rE-mailadres: " . $sMail ."\n\rBericht: " . $sBericht;
  41. $sDatum = date("H:i d-m-Y ");
  42. $iIp = getenv(REMOTE_ADDR);
  43.  
  44. mail($_POST['sNaar'],$_POST['sOnderwerp'],$sBody, $sHeader);
  45.  
  46.  
  47. }
  48. else
  49. {
  50. for($i = 0; $i < count($sError); $i++)
  51. {
  52. echo '<div align="center" class="fout"> '.$sError[$i].'<BR>
  53. Klik <A href="javascript:history.go(-1);"> hier </a> om terug te gaan naar het formulier</A></div>';
  54. }
  55. }
  56. }
  57. else
  58. {
  59. ?>
  60.  
  61. <form name="contact" method="POST" action="mail.php">
  62. <table>
  63. <tr>
  64. <td class="rood"><b>Naam:</b></td>
  65. <td><input name="sNaam" type="text"></td>
  66. </tr>
  67. <tr>
  68. <td class="rood"><b>Adres:</b></td>
  69. <td><input name="sAdres" type="text"><td>
  70. </tr>
  71. <tr>
  72. <td class="rood"><b>Website:</b></td>
  73. <td><input name="sWebsite" type="text" value="http://"><td>
  74. </tr>
  75. <tr>
  76. <td class="rood"><b>Emailadres:</b></td>
  77. <td><input name="sMail" type="text"><td>
  78. </tr>
  79. <tr>
  80. <td class="rood"><b>Bericht: </b></td>
  81. <td><textarea cols="40" rows="15" name="sBericht"></textarea></td>
  82. </tr>
  83. <tr>
  84. <td></td>
  85. <td ><input type="submit" name="submit" value="Verzenden">
  86. </form>
  87. </td>
  88. </tr>
  89. </table>
  90. <?php
  91. }
  92. ?>
  93. </body>
  94. </html>
Offline Thomas - 19/01/2005 15:23
Avatar van Thomas Moderator $sError[] = array();
Daarmee maak je het eerste element van $sError OOK weer een array... Het moet
$sError = array(); zijn.

En die hyperlink moet je ff naar buiten je for-lus verplaatsen uiteraard...
Offline leendertW - 19/01/2005 15:55 (laatste wijziging 19/01/2005 15:59)
Avatar van leendertW PHP beginner Waarom moet die hyperlink buiten die for-lus?

Hij doet het zo prima!
en hoe kan je het zo doen dat hij zegt:

De volgende velden zijn niet ingevult:

- naam
- adres

etc.

Hoe doe je dat. Dan moet je dus eerst de fouten tellen en wanneer er 1 fout is dan moet geeft hij het zo weer:

Het volgende veldis niet ingevult:

- naam

maar wanneer er meerder velden niet zijn ingevult moet hij:

De volgende velden zijn niet ingevult:

- naam
-adres
etc.

weergeven.

Offline Thomas - 19/01/2005 16:20 (laatste wijziging 19/01/2005 16:21)
Avatar van Thomas Moderator
  1. $eenitem = (sizeof($fouten_array) == 1);
  2.  
  3. echo ($eenitem ? "Het" : "De")." volgende veld."($eenitem ? " is" : "en zijn")." niet ingevuld:<br />";


Teehee, PHP is hard...
Offline leendertW - 19/01/2005 17:57
Avatar van leendertW PHP beginner Maar nu heb ik dus het probleem dat hij aangeeft dat de mail is verstuurt maar dat hij niet aan komt:S

  1. <html>
  2. <head>
  3. <title>Mail scriptje </title>
  4. </head>
  5. <body>
  6. <?php
  7. if(isset($_POST['submit'])) {
  8.  
  9. $sName = $_POST['sNaam'];
  10. $sMail = $_POST['sMail'];
  11. $sAdres = $_POST['sAdres'];
  12. $sWebsite = $_POST['sWebsite'];
  13. $sBericht = $_POST['sBericht'];
  14. $sBericht = nl2br($sBericht);
  15.  
  16. $sError[] = array();
  17.  
  18. if ($_POST['sNaam'] == '') {
  19. $sError[] = 'U heeft uw naam niet ingevult';
  20. }
  21. elseif($_POST['sAdres'] == '') {
  22. $sError[] = 'U heeft uw adres niet ingevult';
  23. }
  24. elseif($_POST['sWebsite'] == 'http://') {
  25. $sError[] = 'U heeft uw website niet ingevult';
  26. }
  27.  
  28. elseif(empty($_POST['sMail']) || !eregi('@',$_POST['sMail']) || !eregi('.',$_POST['sMail']) || eregi(' ',$_POST['sMail'])) {
  29. $sError[] = 'Uw heeft uw emailadres niet ingevult';
  30. }
  31. elseif($_POST['sBericht'] == '') {
  32. $sError[] = 'U heeft het bericht niet ingevult';
  33. }
  34. if (count($sError) == 0)
  35. {
  36. $sHeader = "To: ".$sNaam." <".$sMail.">\r\n";
  37. $sHeader = "From: ".$_POST['sNaam']." <".$_POST['sMail'].">\r\n";
  38. $sNaar = ' ';
  39. $sOnderwerp = 'Berichtje van de website';
  40. $sBody = "Er is op ".$sDatum." een contactformulier vanaf je website verstuurd. de volgende gegevens werden ingevoerd:\n\rIp adres: " . $iIp . "\n\rNaam: " . $sNaam . "\n\rAdres: " . $sAdres . "\n\rWebsite: " . $sWebsite . "\n\rE-mailadres: " . $sMail ."\n\rBericht: " . $sBericht;
  41. $sDatum = date("H:i d-m-Y ");
  42. $iIp = getenv(REMOTE_ADDR);
  43.  
  44. mail($_POST['sNaar'],$_POST['sOnderwerp'],$sBody, $sHeader);
  45. echo 'het bericht is succesvol verstuurt';
  46.  
  47. }
  48. else
  49. {
  50. for($i = 0; $i < count($sError); $i++)
  51. {
  52. echo '<div align="center" class="fout"> '.$sError[$i].'<BR>
  53. Klik <A href="javascript:history.go(-1);"> hier </a> om terug te gaan naar het formulier</A></div>';
  54. }
  55. }
  56. }
  57. else
  58. {
  59. ?>
  60.  
  61. <form name="contact" method="POST" action="mail.php">
  62. <table>
  63. <tr>
  64. <td class="rood"><b>Naam:</b></td>
  65. <td><input name="sNaam" type="text"></td>
  66. </tr>
  67. <tr>
  68. <td class="rood"><b>Adres:</b></td>
  69. <td><input name="sAdres" type="text"><td>
  70. </tr>
  71. <tr>
  72. <td class="rood"><b>Website:</b></td>
  73. <td><input name="sWebsite" type="text" value="http://"><td>
  74. </tr>
  75. <tr>
  76. <td class="rood"><b>Emailadres:</b></td>
  77. <td><input name="sMail" type="text"><td>
  78. </tr>
  79. <tr>
  80. <td class="rood"><b>Bericht: </b></td>
  81. <td><textarea cols="40" rows="15" name="sBericht"></textarea></td>
  82. </tr>
  83. <tr>
  84. <td></td>
  85. <td ><input type="submit" name="submit" value="Verzenden">
  86. </form>
  87. </td>
  88. </tr>
  89. </table>
  90. <?php
  91. }
  92. ?>
  93. </body>
  94. </html>

Offline Thomas - 19/01/2005 19:35
Avatar van Thomas Moderator Het succesvol versturen van een emailbericht heeft NIETS te maken met het succesvol ontvangen van een emailbericht.
Weet je ook zeker dat het emailbericht verstuurd wordt ?

Doe eens het volgende:

  1. $success = mail(...);
  2. echo "Het bericht is ".($success ? "" : "NIET ")."succesvol verstuurd.";
Offline leendertW - 19/01/2005 22:16
Avatar van leendertW PHP beginner Nee ik heb het al gezien. Ik doe in de mail() functie wel $sNaar maar die heb ik verder nergens aagegeven:S.

in ieder geval bedankt voor de hulp.:!:
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.24s