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>
Subject komt niet voor in het contact formulier.

Na wat technische en stylistische aanpassingen wordt het formulier verzonden en komt het aan.

Met een beetje aandacht voor detail en wat nadenken kom je een heel end.
Alweer een paar uur bezig geweest om het goed te krijgen, ook heb ik subject toegevoegd in de html en het formulier komt netjes aan maar nog steeds zonder telefoonnummer.
Zoals er is gezegd. Staat deze ook in de POST-array die je met print_r kan uitlezen?
Bedoel je dit ? Ik begrijp het niet helemaal:

$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$subject = $_POST['subject'];
$comments = $_POST['comments'];
$verify = $_POST['verify'];
Nee, ik bedoel:
<?php
echo "<pre>".print_r($_POST,true)."</pre>";
?>
Nee die staat er niet bij, moet ik die ergens plaatsen ?

<?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: $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!';

}
Ja, lijn 75.
Als alles goed is moet je een PHP-array zien.

Maar ik blijf erbij dat dit geen geweldig script is.
Ik ben nog uren bezig geweest maar het lukt me nog steeds niet om alle gegevens binnen te krijgen.
Ik en de anderen geven graag advies, maar we zouden het waarderen als je er wat mee deed. Met enkel berichten in de trant van 'Het lukt niet!' komen we niet veel verder.
Wat we proberen te zeggen is: we kunnen uit het bovenstaande zo gauw niet afleiden wat er fout zou kunnen gaan met het "phone" veld. Daarom is het zaak dat we stap voor stap door het formulier en de verwerking ervan heengaan omdat we om een of andere onbekende reden niet kunnen uitgaan van normale operatie. Dit maakt het voor ons ook (extra) moeilijk omdat het voor ons niet direct duidelijk is waarom dit niet zou werken (of het is iets heel simpels wat we allemaal om een of andere reden hebben gemist :p).

Nu is het zo dat je aan het begin een formulier hebt wat je invult en aan het einde zou er een e-mailbericht uit moeten rollen met een veld wat niet wordt weergegeven. Het is niet handig, te meer omdat met de verzending van e-mail zelf van alles mis kan gaan, om elke keer helemaal aan de finishlijn te constateren dat er onderweg blijkbaar iets mis ging. Wat je dan beter kunt doen is daarvoor een of meer meetpunten installeren (zoals de var_dump) zodat we kunnen constateren of het "phone" veld in eerste instantie correct het e-mailbericht in gaat. Zodat we makkelijk dingen kunnen uitsluiten.

Mogelijk gaat er een proces nog met de code aan de haal, of is de HTML die uiteindelijk wordt uitgespuugd zodanig dat het "phone" veld om een of andere manier niet meer werkt. Mogelijk is er een conflict met andere onderdelen van de site en/of zit er bijvoorbeeld JavaScript in het webtemplate of ander onderdeel wat dit veld onklaar maakt.

Daarom is het zaak om wat (grondige) waarheidsvinding te gaan doen. Kijk bijvoorbeeld eens naar de HTML-broncode die uiteindelijk wordt gegenereerd. Zit er iets vreemds in het formulier of in het HTML-document in zijn geheel? Zonee, ga je naar stap twee: kijk wat de PHP-zijde ontvangt uit het formulier door de inhoud van het formulier ($_POST) weer te geven op het scherm op de hierboven beschreven wijze. Als daar geen "phone" veld tussen zit dan gaat er dus tussen verzenden en ontvangen/verwerken van het formulier iets mis. Maar dat houdt dus ook in dat je op dat moment het e-mail onderdeel volledig buiten beschouwing kunt laten omdat daar het probleem vooralsnog niet zit.

Vervolgens moet de PHP-code gerepareerd worden waarna je de hele flow opnieuw test.

Het makkelijkste is dus gewoon een stapsgewijze aanpak waarbij je bij elke stap controleert wat de "toestand van de data" is zodat je heel snel van grof naar fijn kunt gaan waarbij je inzoomt op de veroorzaker van de fout.

Reageren