Hallo iedereen,

Ik wil graag een HTML formulier op een website kunnen verzenden met PHP.
Het enige probleem die ik nu heb is dat er niks ingevuld is op de mail die ik krijg.
Je kan het formulier verzenden en ik ontvang de mail, maar er is niks ingevuld. Hoe komt dit?
Ik heb al een ander formulier gemaakt op dezelfde manier en die werkte wel, misschien zie ik iets kleins over het hoofd.

Hier is de code HTML:

<form method="post" action="inschrijf.php">
<input type="radio" name="lidgeld" value="65euro" required> € 65 periode: januari-december 2014 - Volwassenen + jeugdrecreanten<br>
<input type="radio" name="lidgeld" value="75euro" required> € 75 periode: januari-december 2014 - Jeugdspelers -18 die training volgen en competitiespelers +18<br>
<input type="radio" name="lidgeld" value="45euro" required> € 45 periode: juli-december 2014 - Alle categorieën (halfjaarlijks lidgeld)<br>
<br>

Naam*: <input type="text" name="naam" required>
E-mailadres*: <input type="text" name="email" required><br>
Geboortedatum*: <input type="text" name="geboortedatum" required>
Geboorteplaats*: <input type="text" name="geboorteplaats" required>
Adres*: <input type="text" name="adres" required>
Telefoon: <input type="text" name="tel"><br>
GSM 1: <input type="text" name="gsma"><br>
GSM 2: <input type="text" name="gsmb"><br>
<br>

Maat t-shirt*:
<input type="radio" style="margin-left:38px;" name="shirt" value="XS" required>XS
<input type="radio" style="margin-left:28px;" name="shirt" value="S" required>S
<input type="radio" style="margin-left:28px;" name="shirt" value="M" required>M
<input type="radio" style="margin-left:28px;" name="shirt" value="L" required>L
<input type="radio" style="margin-left:28px;" name="shirt" value="XL" required>XL
<input type="radio" style="margin-left:28px;" name="shirt" value="XXL" required>XXL
<input type="radio" style="margin-left:28px;" name="shirt" value="XXXL" required>XXXL<br>
<br>
<input type="submit" value="Versturen">
</form>


Hier is de code in PHP:

<?php
$checkbox_lidgeld = $_POST['cf_lidgeld'];
$field_naam = $_POST['cf_naam'];
$field_geboortedatum = $_POST['cf_geboortedatum'];
$field_geboorteplaats = $_POST['cf_geboorteplaats'];
$field_adres = $_POST['cf_adres'];
$field_email = $_POST['cf_email'];
$field_tel = $_POST['cf_tel'];
$field_gsma = $_POST['cf_gsma'];
$field_gsmb = $_POST['cf_gsmb'];
$checkbox_shirt = $_POST['cf_shirt'];

$mail_to = '[email protected]';
$subject = 'Inschrijving BBC 2014';

$body_message = 'Lidgeld: '.$checkbox_lidgeld."\n";
$body_message .= 'Naam: '.$field_naam."\n";
$body_message .= 'Geboortedatum: '.$field_geboortedatum."\n";
$body_message .= 'Geboorteplaats: '.$field_geboorteplaats."\n";
$body_message .= 'Adres: '.$field_adres."\n";
$body_message .= 'Email: '.$field_email."\n";
$body_message .= 'Telefoon: '.$field_tel."\n";
$body_message .= 'GSM 1: '.$field_gsma."\n";
$body_message .= 'GSM 2: '.$field_gsmb."\n";
$body_message .= 'T-shirt: '.$checkbox_shirt."\n";

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

$mail_status = mail($mail_to, $subject, $body_message, $headers);


if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
alert('Bedankt voor uw inschrijving.');
window.location = 'inschrijven.html';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
alert('Er is iets misgegaan. Probeer opnieuw, of contacteer ons op [email protected]');
window.location = 'inschrijven.html';
</script>
<?php
}
?>
1) Zet je code tussen [code.] en [/code.] (Zonder punt)

2) In je formulier gebruik je $_POST['naam'] en bij het versturen gebruik je $_POST['cf_naam']
Dit doe je met alle variabelen. Dus je stuurt verkeerde, lege, variabelen mee.

3) Het is niet nodig om variabelen eerst om te zetten naar andere variabelen voordat je ze gebruikt. Je kunt ook gewoon de $_POST variabelen rechtstreeks gebruiken.

4) Ik zou je $_POST variabelen beter beveiligen. Zorg ervoor dat er geen kwaadwillende code in mee gestuurd kan worden door gebruik te maken van bijvoorbeeld htmlentities() of htmlspecialchars()
Bedankt Michael, het is opgelost.

Ik ken eigenlijk niks van PHP, deze code heb ik gewoon van internet gehaald.
Wat bedoel je met beter beveiligen? kan je daar een voorbeeld van geven?
Injection. Dat bedoelen we.

Google zelf eens "SQL injection" of "php e-mail injection"

Hackers kunnen via jouw formulier jouw server hacken, waarna ze kunnen doen wat ze willen.
Zo lang jij niet goed begrijpt wat injection is, hoe het werkt en hoe je er tegen te wapenen,
ben je een gevaar op het net.

Wie injection niet begrijpt raad ik aan geen formulieren op hun site te zetten, tot ze 't leren.

Je controleert nergens of de gegevens zouden kunnen voldoen: een geboortedatum en e-mailadres moet aan bepaalde criteria voldoen.
Zonder enige controle (is het ingevuld, kan het kloppen wat er is ingevuld), verstuur jij een mailbericht (waarbij ik niet zeker ben of je de headers wel volledig/juist hebt) met daarin de ongecensureerde versie. Michael geeft je al een voorbeeld waarmee dat kan (even zoeken met Google geeft je uitleg hoe te gebruiken).


Tip: haal je mailadres uit je post, anders krijg je straks misschien wat extra mail.

Reageren