Dit is mijn allereerste PHP documentje, en het werkt beter dan ik al verwacht had. Maar ik heb 4 problemen die ik graag opgelost zou zien.
Probleem 1: De gegevens van dit formulier worden mij doorgestuurd, maar $email is de enige ingevulde waarde die ik ontvang. De rest van de $data is niet aanwezig in mijn e-mail. De validatie klopt wel.
Probleem 2: $meetnaam zou het onderwerp van de mail moeten zijn, dit is het niet.
Probleem 3: $email zou ook als de "verzender" moeten gekend zijn (nu is dit blanco), zodat ik gewoon op reageren kan klikken om vragen te stellen.
Probleem 4: Hoe kan ik er voor zorgen dat het vakje ($akkoord) MOET aangevinkt zijn. Net zoals nu sommige tekst velden verplicht zijn?
Dank bij voorbaat,
Dit is de code:
PHP structuur
<?php
/* Dit is waar de mail naar toe gaat, dit werkt! */
$myemail = "[email protected]";
/* Controle op de ingevulde data. Dit werkt op deze gegevens. */
$name = check_input($_POST['meetnaam'], "Voer de meet naam in.");
$subject = check_input($_POST['meetadres'], "Voer het adres van de meet in.");
$email = check_input($_POST['email']);
/* Foutmelding bij e-mail adres. Dit werkt. */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("Het opgegeven e-mail adres is ongeldig.");
}
/* Dit is het bericht die ik moet ontvangen, ik ontvang deze gegevens, maar NIET de gegevens met een $ teken er in, met uitzondering van $email, die staat er wel. */
$message = "
Naam van de meet: $meetnaam
Organisator: $organisator
Adres: $meetadres
Binnen of buiten: $binbuit
E-mail adres: $email
Mag e-mail verschijnen op de website: $emailtonen
Contact (telefoon): $telefoon
Uren: $meeturen
Bereikbaarheid met de trein: $trein
Bereikbaarheid met de auto: $auto
Andere informatie: $andereinfo
Akkoord met de regels: $akkoord
";
/* Mail structuur, $meetnaam zou het ONDERWERP moeten zijn, maar dit is het niet. $message staat wel in de mail, maar niet met alle gegevens. Ook zou ik graag hebben dat het ingevoerde mailadres dat van de verstuurder is (nu is het mail adres van de verstuurder blanco */
mail($myemail, $meetnaam, $message);
/* Als het gelukt is, komten ze uit op deze pagina. Dit werkt. */
header('Location: klaar.html');
exit();
/* Functies */
function check_input($data, $problem='')
{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
if ($problem && strlen($data) == 0)
{
show_error($problem);
}
return $data;
}
function show_error($myError)
{
?>
<html>
<body>
<p>Oeps, verbeter alstublieft de volgende fout:</p>
<strong><?php echo $myError; ?></strong>
<p>Keer terug, en probeer het opnieuw.</p>
</body>
</html>
<?php
exit();
}
?>Formulier structuur:
<form method="post" action="meetmailer.php">
<div class="colformwrap">
<div class="colformleft">
Naam van de meet <span class="verplicht">*</span>:
</div><!--
--><div class="colformright">
<input type="text" name="meetnaam" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Naam van de organisatie of organisator:
</div><!--
--><div class="colformright">
<input type="text" name="organisator" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Adres van de meet <span class="verplicht">*</span>:
</div><!--
--><div class="colformright">
<input type="text" name="meetadres" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Is de meet binnen of buiten?
</div><!--
--><div class="colformright">
<select name="binbuit">
<option value="Buiten">Buiten</option>
<option value="Binnen">Binnen</option>
<option value="Binnen en Buiten">Binnen en Buiten</option>
</select>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Contact (e-mail adres) <span class="verplicht">*</span>:
</div><!--
--><div class="colformright">
<input type="text" name="email" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Mag dit e-mail adres op de website verschijnen?
</div><!--
--><div class="colformright">
<input class="bolleke" type="radio" name="emailtonen" value="0" checked> Neen <input class="bolleke" type="radio" name="emailtonen" value="1"> Ja
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Contact (telefoon):
</div><!--
--><div class="colformright">
<input type="text" name="telefoon" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Uren:
</div><!--
--><div class="colformright">
<input type="text" name="meeturen" maxlength="50">
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Bereikbaarheid met de trein:
</div><!--
--><div class="colformright">
<textarea name="trein" maxlength="5000"></textarea>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Bereikbaarheid met de auto:
</div><!--
--><div class="colformright">
<textarea name="auto" maxlength="5000"></textarea>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
Andere informatie:
</div><!--
--><div class="colformright">
<textarea name="andereinfo" maxlength="5000"></textarea>
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
</div><!--
--><div class="colformright">
<input class="bolleke" type="checkbox" name="akkoord" value="0"> Ik heb de <a href="#">regels</a> gelezen en ga hiermee akkoord.
</div>
</div>
<div class="colformwrap">
<div class="colformleft">
</div><!--
--><div class="colformright">
<input class="verstuurknop" type="submit" value="Verzenden">
</div>
</div>
</form>