login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Probleem: mailform blijft leeg (Opgelost)

Offline fdaanen - 31/05/2009 11:03 (laatste wijziging 31/05/2009 11:09)
Avatar van fdaanenNieuw lid Hallo allemaal,

Ik ben een beginner op het gebied van php. Ik heb voor mijn site een mailform gemaakt op basis van een ander mailform.
Als ik dit test op mijn site dan ontvang ik wel een mail, maar hier staan geen gegevens in...

Wie weet raad?

HET FORMULIER:

  1. <form method="POST" action="mailverzenden.php" target="_top">
  2. <table align="center">
  3. <tr>
  4. <td>Naam:</td>
  5. <td><input name="naamveld" type="text" id="naamveld"></td>
  6. </tr>
  7. <tr>
  8. <td>E-mail adres: </td>
  9. <td><input name="mailadresveld" type="text" id="mailadresveld"></td>
  10. </tr>
  11. <tr>
  12. <td>Telefoonnummer:</td>
  13. <td><input name="telveld" type="text" id="mailadresveld0"></td>
  14. </tr>
  15. <tr>
  16. <td>Bericht:</td>
  17. <td><textarea name="berichtveld" id="berichtveld"></textarea></td>
  18. </tr>
  19. <tr>
  20. <td>&nbsp;</td>
  21. <td><input type="submit" value="Verzend" name="B1">
  22. <input type="reset" value="Reset" name="B2"></td>
  23. </tr>
  24. </table>
  25.  
  26. </form>

DE PHP:

  1. <?
  2.  
  3. $mail = "info@blablablabla.com";
  4.  
  5. mail("$mail", "$onderwerpveld", "
  6.  
  7.  
  8.  
  9. Naam: $naamveld
  10. E-mail adres: $mailadresveld
  11. Telefoonnummer: $telveld
  12. Bericht: $berichtveld
  13.  
  14.  
  15.  
  16. ", "From: $naamveld<$mailadresveld>\nReturn-path: $mailadresveld");
  17.  
  18. ?>


Alvast bedankt voor jullie reacties!
Koen schreef:
Code tags gebruiken aub, zo blijft je topic overzichtelijk. Lees ook even de forumregels.

12 antwoorden

Gesponsorde links
Offline Koen - 31/05/2009 11:14
Avatar van Koen PHP expert Het probleem is simpel: vroeger was er een optie in PHP, PHP.net: register_globals, die standaard aanstond. Met deze optie kon je de elementen uit superglobals ($_POST, $_SERVER, $_SESSION, $_GET, ...) schrijven als een gewone variabele. Dus bijvoorbeeld:
  1. $_POST['veldnaam']; // dit is de inhoud van het tekstveld 'veldnaam' dat via POST werd verzonden door een formulier
  2. // werd dan
  3. $veldnaam;


Deze optie staat bij de recentere versies van PHP standaard uit, en zal zelfs verwijderd worden vanaf PHP6. Dit omdat er teveel security bugs van kracht zouden zijn.

Om je probleem op te lossen pas je dus $berichtveld aan naar $_POST['berichtveld'], en dat voor alle andere velden die je via het formulier meestuurt.

Als je het jezelf toch gemakkelijk wil maken kan je nog altijd overwegen de functie PHP.net: extract te gebruiken.
Offline fdaanen - 31/05/2009 11:29
Avatar van fdaanen Nieuw lid Beste Koen,

Bedankt voor je reactie, ik heb nu het volgende in mijn PHP.

  1. <?
  2.  
  3. $mail = "info@miljoenenverdienen.com";
  4.  
  5. mail("$mail", "$onderwerpveld", "
  6.  
  7.  
  8.  
  9. Naam: $_POST['naamveld']
  10. E-mail adres: $_POST['mailadresveld']
  11. Telefoonnummer: $_POST['telveld']
  12. Bericht: $_POST['berichtveld']
  13.  
  14.  
  15.  
  16. ", "From: $naamveld<$mailadresveld>\nReturn-path: $mailadresveld");
  17.  
  18. ?> ]


Maar nu krijg ik deze error als ik op mn site het formulier invul...

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/blablablabla.com/www/mailverzenden.php on line 9
Offline Martijn1989 - 31/05/2009 11:34 (laatste wijziging 31/05/2009 11:34)
Avatar van Martijn1989 PHP ver gevorderde Gebruik anders dit script, doet hetzelfde en werkt .. als je hem wilt uitbreiden (wat bij jou het geval is met telefoonnummer bijv.) kan je daar ook weer wat van leren :

  1. <h1>Contact</h1>
  2. U kunt altijd contact met ons opnemen, dit kan via email. Mocht u een vraag hebben kunt u dit contactformulier invullen.<br /><br />
  3.  
  4. <?php
  5.  
  6. function mailen($naam_ontvanger, $email_ontvanger, $naam_verzender, $email_verzender, $onderwerp, $bericht) {
  7.  
  8. $headers = "From: ".$naam_verzender." <".$email_verzender.">\r\n";
  9. $headers .= "MIME-Version: 1.0\r\n";
  10. $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
  11. $headers .= "Return-Path: Mail-Error <". $email_verzender .">\r\n";
  12. $headers .= "Reply-To: ".$naam_verzender." <".$email_verzender.">\r\n";
  13.  
  14. $bericht = nl2br($bericht);
  15.  
  16. mail($email_ontvanger, $onderwerp, $bericht, $headers);
  17.  
  18.  
  19. }
  20.  
  21. if(isset($_POST['submit'])) {
  22.  
  23. if($_POST['naam'] != "" && $_POST['email'] != "" && $_POST['bericht'] != "") {
  24.  
  25. mailen("Hier jou naam", "Hier jou emailadres", htmlspecialchars($_POST['naam']), htmlspecialchars($_POST['email']), "Bericht uit contactformulier!", htmlspecialchars($_POST['bericht']));
  26. echo '<b>Uw email is verzonden naar ons, wij nemen zo snel mogelijk contact op als dat nodig is.</b>';
  27.  
  28. $_POST['naam'] = ""; $_POST['email'] = ""; $_POST['bericht'] = "";
  29.  
  30. } else {
  31.  
  32. echo '<b>Vul wel alle gegevens in, anders kunnen wij geen contact met u opnemen!</b>';
  33.  
  34. }
  35.  
  36. } else {
  37.  
  38.  
  39. ?>
  40.  
  41. <form action="" method="post">
  42. <table>
  43. <tr><td>Naam :</td><td><input name="naam" type="text" value="<?php echo htmlspecialchars($_POST['naam']); ?>"></td></tr>
  44. <tr><td>Email :</td><td><input name="email" type="text" value="<?php echo htmlspecialchars($_POST['email']); ?>"></td></tr>
  45. <tr><td valign="top">Bericht :</td><td><textarea name="bericht" rows=5 cols=30 wrap="on"><?php echo htmlspecialchars($_POST['bericht']); ?></textarea></td></tr>
  46. <tr><td colspan="2"><input type="submit" name="submit" value="Email bericht sturen!"></td></tr>
  47. </table>
  48. </form>
  49. <?php } ?>
Offline Koen - 31/05/2009 11:38
Avatar van Koen PHP expert
  1. <?php
  2.  
  3. $mail = "info@miljoenenverdienen.com";
  4.  
  5. mail($mail, $_POST['onderwerpveld'], "
  6.  
  7.  
  8.  
  9. Naam: ".$_POST['naamveld']."
  10. E-mail adres: ".$_POST['mailadresveld']."
  11. Telefoonnummer: ".$_POST['telveld']."
  12. Bericht: ".$_POST['berichtveld']."
  13.  
  14.  
  15.  
  16. ", "From: ".$_POST['naamveld']." <".$_POST['mailadresveld'].">\r\nReturn-path: ".$_POST['mailadresveld']);
  17.  
  18. ?>


Dit zal beter werken, probeer altijd om variabelen buiten de aanhalingstekens te houden op bovenstaande manier. Op die manier weet de PHP parser dat het dat niet moet zien als letterlijke tekst en is je scriptje weer een paar microseconden sneller, bovendien voorkom je foutmeldingen zoals deze 
Offline fdaanen - 31/05/2009 11:40 (laatste wijziging 31/05/2009 11:55)
Avatar van fdaanen Nieuw lid Hoi Koen,

Het werkt, harstikke bedankt.
Het enige waar ik nu nog mee zit is een terugrouting naar mijn site nadat het formulier verstuurd is.

Je krijgt nu een witte pagina te zien...

Gr,
Ferdie
Offline Borre - 31/05/2009 11:59
Avatar van Borre Nieuw lid Dit toevoegen als de mail is verstuurd:
header('Refresh: 3; index.php');
Offline fdaanen - 31/05/2009 12:16
Avatar van fdaanen Nieuw lid kan ik 'm dan ook naar bijvoorbeeld index.htm laten gaan?
Offline vinTage - 31/05/2009 12:20
Avatar van vinTage Nieuw lid
Borre schreef:
Dit toevoegen als de mail is verstuurd:
header('Refresh: 3; index.php');


fdaanen schreef:
kan ik 'm dan ook naar bijvoorbeeld index.htm laten gaan?


Door zelf de moeite nemen om php naar html te veranderen  
Offline fdaanen - 31/05/2009 12:24
Avatar van fdaanen Nieuw lid ja, maar wat ik ook intik, hij blijft verversen op dezelfde pagina en het formulier wordt iedere drie seconden naar mijn mailbox verzonden...
Offline vinTage - 31/05/2009 12:28
Avatar van vinTage Nieuw lid die code wel NA je mail functie gezet ?
Offline Koen - 31/05/2009 12:42
Avatar van Koen PHP expert
  1. header('Refresh: 3; URL=index.html');

gaat beter werken 
Offline fdaanen - 31/05/2009 12:48
Avatar van fdaanen Nieuw lid Kijk, dat werkt beter.
Thanx Koen!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.448s