Beste mensen,

Kan iemand mij helpen, ik ben al dagen bezig om het contactformulier goed te krijgen.
Het formulier wordt vanaf de website netjes verzonden naar de mail maar het ingevulde telefoonnummer komt niet door. Ik zou er graag nog een paar velden aan toe willen voegen maar zit helemaal klem.

Zo komt de mail aan vanaf het contactformulier:

You have been contacted by Hanny Kiesling with regards to , their
additional message is as follows.

"Dit is mijn berichttekst"

You can contact Hanny Kiesling via email, [email protected] or
via phone


Hopelijk kan iemand mij helpen :(

Alvast bedankt.
Hanny Kiesling





Dit is de php:

<?php
if(!$_POST) exit;
// Email address verification, do not edit.
function isEmail($email) {
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$subject = $_POST['subject'];
$comments = $_POST['comments'];
$verify = $_POST['verify'];

if(trim($name) == '') {
echo '<div class="error_message">Attention! You must enter your name.</div>';
exit();
} else if(trim($email) == '') {
echo '<div class="error_message">Attention! Please enter a valid email address.</div>';
exit();
} else if(!isEmail($email)) {
echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>';
exit();
}

if(trim($comments) == '') {
echo '<div class="error_message">Attention! Please enter your message.</div>';
exit();
}

if(get_magic_quotes_gpc()) {
$comments = stripslashes($comments);
}

// Configuration option.
// Enter the email address that you want to emails to be sent to.
// Example $address = "[email protected]";

//$address = "[email protected]";
$address = "[email protected]";

// Configuration option.
// i.e. The standard subject will appear as, "You've been contacted by John Doe."
//Example, $e_subject = '$name . ' has contacted you via Your Website.';

$e_subject = 'You\'ve been contacted by ' . $name . '.';

// Configuration option.
// You can change this if you feel that you need to.
// Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

$e_body = "You have been contacted by $name with regards to $subject, their additional message is as follows." . PHP_EOL . PHP_EOL;
$e_content = "\"$comments\"" . PHP_EOL . PHP_EOL;
$e_reply = "You can contact $name via email, $email or via phone $phone";
$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );

$headers = "From: \"$name\" <$email>" . PHP_EOL;
$headers .= "Reply-To: $email" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;

if(mail($address, $e_subject, $msg, $headers)) {

// Email has sent successfully, echo a success page.

echo "<fieldset>";
echo "<div id='success_page'>";
echo "<h1>Email Sent Successfully.</h1>";
echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>";
echo "</div>";
echo "</fieldset>";
} else {
echo 'ERROR!';
}





<form id="contactform" action="contact.php" name="contactform" method="post">
<header class="form-header">
<h3>Contact Form</h3>
<div class="post-body-form text-center">
<p>In order to provide better service to you, PetVet Veterinary<br> Clinic
It is working with the appointment system. Please fill in the<br> following form completely.</p>
</div>
<fieldset class="row-fluid appoform">
<div class="col-md-12">
<label class="sr-only">Your name</label>
<input type="text" name="name" id="name" class="form-control" placeholder="Naam *">
</div>
<div class="col-md-12">
<label class="sr-only">Email address</label>
<input type="email" name="email" id="email" class="form-control" placeholder="Email *">
</div>
<div class="col-md-12">
<label class="sr-only">Phone</label>
<input type="text" name="phone" id="phone" class="form-control" placeholder="Telefoon">
</div>
<div class="col-md-12">
<textarea class="form-control" name="comments" id="comments" rows="6" placeholder="Extra notes.."> </textarea>
</div>
<div class="col-md-12">
<button type="submit" value="SEND" id="submit" class="btn btn-primary btn-block">Send Message</button>
</div>
</fieldset>
</form>
Zit het probleem misschien dan tussen content en comments ?
Zoals al eerder gezegd is: Kijk eens met print_r() naar je POST-waardes. Dit als altijd een goede leidraad.
Ik heb print_r() toegepast en krijg de volgende melding als ik het formulier wil verzenden:

Array ( [name] => Hanny Kiesling [email] => [email protected] [phone] => 657105239 )
Dan zijn dit de enige twee velden die verstuurd zijn.
Kan je jouw relevante code laten zien?
Dit is de php:

<?php

if (!$_POST) {
header('Location: .');
exit();
}
// Email address verification, do not edit.
function isEmail($email) {
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$email));
}

if (!defined("PHP_EOL")) define("PHP_EOL", "\r\n");

$name = $_POST['name'];
$email = $_POST['email'];
$phone = ( $_POST['phone'] <> '' ? $_POST['phone'] : 'n/a' );
$subject = $_POST['subject'];
$comments = $_POST['comments'];
$verify = $_POST['verify'];

if(trim($name) == '') {
echo '<div class="error_message">Attention! You must enter your name.</div>';
exit();
} else if(trim($email) == '') {
echo '<div class="error_message">Attention! Please enter a valid email address.</div>';
exit();
} else if(!isEmail($email)) {
echo '<div class="error_message">Attention! You have enter an invalid e-mail address, try again.</div>';
exit();
}

if(trim($comments) == '') {
echo '<div class="error_message">Attention! Please enter your message.</div>';
exit();
}

if(get_magic_quotes_gpc()) {
$comments = stripslashes($comments);
}

// Configuration option.
// Enter the email address that you want to emails to be sent to.
// Example $address = "[email protected]";

$address = "[email protected]";

// Configuration option.
// i.e. The standard subject will appear as, "You've been contacted by John Doe."
// Example, $e_subject = '$name . ' has contacted you via Your Website.';

$e_subject = 'You have been contacted by "' . $name . '"';

// Configuration option.
// You can change this if you feel that you need to.
// Developers, you may wish to add more fields to the form, in which case you must be sure to add them here.

$e_body = 'You have been contacted by "' . $name . '" with regards to "' . $subject . '".' . PHP_EOL . PHP_EOL;
$e_content = 'Their additional message is as follows : ' . PHP_EOL . PHP_EOL;
$e_content .= '"' . $comments . '"' . PHP_EOL . PHP_EOL;
$e_reply = 'You can contact "' . $name . '" via email : ' . $email . ' or via phone : ' . $phone;

$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );

$headers = 'From: "' . $name . '" <' . $email . '>'. PHP_EOL;
$headers .= 'Reply-To: "' . $name . '" <' . $email . '>'. PHP_EOL;
$headers .= 'MIME-Version: 1.0' . PHP_EOL;
$headers .= 'Content-type: text/plain; charset=utf-8' . PHP_EOL;
$headers .= 'Content-Transfer-Encoding: quoted-printable' . PHP_EOL;


if( mail( $address, $e_subject, $msg, $headers ) ) {

// Email has sent successfully, echo a success page.

echo "<fieldset>";
echo "<div id='success_page'>";
echo "<h1>Email Sent Successfully.</h1>";
echo "<p>Thank you <strong>$name</strong>, your message has been submitted to us.</p>";
echo "</div>";
echo "</fieldset>";

} else {
echo 'ERROR!';
}?>

-------------------------------------------------------------------------------------------
En dit is de html:

<div id="message"></div>

<form id="contactform" action="contact.php" name="contactform" method="post">
<header class="form-header">
<h3>Contact Form</h3>
</header>
<div class="post-body-form text-center">
<p>In order to provide better service to you please fill in the<br> following form completely.</p>
</div>
<fieldset class="row-fluid appoform">
<div class="col-md-12">
<label class="sr-only">Your name</label>
<input type="text" name="name" id="name" class="form-control" placeholder="Naam *"></div>
<div class="col-md-12">
<label class="sr-only">Email address</label>
<input type="email" name="email" id="email" class="form-control" placeholder="Email *"></div>
<div class="col-md-12">
<label class="sr-only">Phone number</label>
<input type="text" name="phone" id="phone" class="form-control" placeholder="Telefoon"></div> <div class="col-md-12">
<textarea class="form-control" name="comments" id="comments" rows="6" placeholder="tekst"> </textarea></div>
<div class="col-md-12">
<button type="submit" value="SEND" id="submit" class="btn btn-primary btn-block">Send Message</button>
</div>
</fieldset>
</form>
Dan heb je denk ik gewoon niks ingevuld.

Overigens hebben we ook code-tags voor in het forum. Dat maakt de boel beter leesbaarder.

Maar ik blijf erbij dat dit script niet echt veilig en handig in gebruik is:
- Waarom zou je je script bij een validatiemelding moeten stoppen met exit of die(). Nog mooier zou het zijn om de melding bij je formulier te tonen.
- Je controle op een mailadres ondersteunt bijv. geen [email protected], en kan veel simpeler met filter_var() in PHP.
- Geen controle bij de headers, header-injection is mogelijk en dus gevoelig om te worden misbruikt voor spammers!! Gevaar voor je hosting die hun mailserver op een blacklist kunnen zien gaan. Mails van hun andere klanten kunnen daardoor in de spam-box belanden.
- Verkeerd gebruik van de From header. Deze is altijd vast, en vaak een mailadres binnen je domein.
- Controle op get_magic_quotes_gpc() is echt niet meer nodig, tenzij je een PHP van 7 jaar oud draait ofzo.

Aan het begin van dit topic heb ik een beter alternatief geplaatst, waar je beter naar kan kijken. Want als je dit huidige script zou moeten oplappen, dan kan je net zo goed opnieuw kunnen beginnen.

Okee, dat klinkt niet echt goed dan moet ik een nieuw formulier zien te maken.
Heel erg bedankt voor de medewerking.
Het formulier is niet zozeer het probleem, maar de afhandeling.
Aan het begin van dit topic heb ik een veiliger alternatief geplaatst.

Edit: Ik zou het formulier dan wel niet in je echo plaatsen, omdat dat best onhandig werkt. Misschien moet ik dit script eens een keer gaan 'forken' tot een beter script.
Ik heb het formulier aan het begin van de topic nog proberen aan te passen maar dat lukte niet helaas.
Dat kan, dan gaat er vermoedelijk *iets* mis.

Reageren