Dag allemaal!


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">
							&nbsp;
						</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">
							&nbsp;
						</div><!-- 

					 	--><div class="colformright">
							<input class="verstuurknop" type="submit" value="Verzenden">
						</div>
					</div>



				</form>

Alle waarden die je post staan in een array dus verander het naar $_POST['meetnaam']
Dit kreeg ik bij oplossing 1: Notice: Undefined variable: meetnaam in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 25 Notice: Undefined variable: organisator in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 26 Notice: Undefined variable: meetadres in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 27 Notice: Undefined variable: binbuit in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 28 Notice: Undefined variable: emailtonen in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 30 Notice: Undefined variable: telefoon in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 31 Notice: Undefined variable: meeturen in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 32 Notice: Undefined variable: trein in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 35 Notice: Undefined variable: auto in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 38 Notice: Undefined variable: andereinfo in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 42 Notice: Undefined variable: akkoord in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 46 Notice: Undefined variable: meetnaam in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 49 Warning: Cannot modify header information - headers already sent by (output started at /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php:1) in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 52



En dit bij oplossing 2: Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in /customers/d/e/d/mysite.com/httpd.www/test/TESPIA/meetmailer.php on line 24



Dit is mijn allereerste formulier, dus sorry als ik echt grote fouten heb gemaakt.

Dus zoals Daan zegt.
Verander dit

Naam van de meet: $meetnaam


in

Naam van de meet: $_POST['meetnaam']

en dat voor al je velden uit het formulier
Zijn simpele beginnersfouten.

Zoals Daan al aangeeft:
$meetnaam (Undefined variable: meetnaam ) bestaat niet dat is $_POST['meetnaam'].
En kijk eens naar die link voor de mailheaders.

Als je verandert ben je al een heel eind.

Reageren