Dit script is niet echt veilig.
Als ik naar deze regel krijg, dan heb ik het vermoeden dat ie alleen een gedeelte controleert (ik weet niet of ereg anders werkt als preg):
ereg('[A-Za-z0-9_-]+\@[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+', $EmailFrom)
Een emailadres als deze kan dus ook: a@a.a
Wat kwalijker is, is dat je op deze manier ook headers kan invoegen:
a@a.a
Bcc: derde.partij@example.com
Ook zou ik in wanneer er een fout optreed de gegevens in het tekstveld invoeren, zodat men niet alles over moet typen.
Dit heb ik er van gemaakt (je zou zelf moeten zien waar je HTML moet plaatsen):
<?php
$redirect = 'http://xxx';
$email_to = 'jij@domein.nl';
// einde instellingen
$posted = $_SERVER['REQUEST_METHOD'] == 'POST';
$showform = TRUE;
$Naam = getPost('Naam');
$EmailFrom = getPost('EmailFrom');
$validEmail = preg_match('/^([*+!.&#$¦\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i', $EmailFrom);
$Adres = getPost('Adres');
$Postcode = getPost('Postcode');
$Woonplaats = getPost('Woonplaats');
$Rekeningnummer = getPost('Rekeningnummer');
if($posted && $validEmail &&
$Naam && $Adres && $Postcode && $Woonplaats && $Rekeningnummer){
$header = "From: $EmailFrom\n"
. "Reply-To: $EmailFrom\n";
$subject = "Lid worden";
$message = "Naam: $Naam\n"
. "Email: $EmailFrom\n"
. "Adres: $Adres\n"
. "Postcode: $Postcode\n"
. "Woonplaats: $Woonplaats\n"
. "Rekeningnummer: $Rekeningnummer\n"
. "Actie akkoord: Ja\n"
. "Nieuwsbrief: ".(isset($_POST['Nieuwsbrief'])?'Ja':'Nee')."\n"
. "IP van gebruiker: ".$_SERVER['REMOTE_ADDR']."\n"
. "------------------------------------------------------------\n";
if(@mail($email_to, $subject, $message, $header)){
header('Location: '.$redirect);
exit;
echo 'Het bericht is verzonden!';
$showform = FALSE;
}
else{
echo 'Door technische problemen kon het bericht niet in ontvangst worden genomen.<br>Probeert u het later nog eens.';
}
}
function getPost($name, $multiline=FALSE){
if(empty($_POST[$name]) || !is_string($_POST[$name])) return '';
$val = $_POST[$name];
$val = get_magic_quotes_gpc() ? stripslashes($val) : $val;
if(!$multiline){
$val = str_replace(array("\r", "\n"), '', $val);
}
return trim($val);
}
if($showform){
?>
<html>
<head>
<titel>Contact</title>
</head>
<body>
<form action="" method="post">
<p>Naam:* <input type="text" name="Naam" value="<?php echo htmlentities($Naam); ?>"></p>
<?php if($posted&&!$Naam)echo '<p style="color:#f00">U heeft geen naam ingevuld.</p>';?>
<p>Email:* <input type="text" name="EmailFrom" value="<?php echo htmlentities($EmailFrom); ?>"></p>
<?php if($posted&&!$validEmail)echo '<p style="color:#f00">U heeft geen geldig e-mailadres ingevuld.</p>';?>
<p>Adres:* <input type="text" name="Adres" value="<?php echo htmlentities($Adres); ?>"></p>
<?php if($posted&&!$Adres)echo '<p style="color:#f00">U heeft geen adres ingevuld.</p>';?>
<p>Postcode:* <input type="text" name="Postcode" value="<?php echo htmlentities($Postcode); ?>"></p>
<?php if($posted&&!$Postcode)echo '<p style="color:#f00">U heeft geen postcode ingevuld.</p>';?>
<p>Woonplaats:* <input type="text" name="Woonplaats" value="<?php echo htmlentities($Woonplaats); ?>"></p>
<?php if($posted&&!$Woonplaats)echo '<p style="color:#f00">U heeft geen woonplaats ingevuld.</p>';?>
<p>Rekeningnummer:* <input type="text" name="Rekeningnummer" value="<?php echo htmlentities($Rekeningnummer); ?>"></p>
<p><input type="checkbox" name="Akkoord" value="Yes" <?php if(isset($_POST['Akkoord']))echo ' checked'; ?>>Ik ga akkoord met de maandelijkse betaling van 7 euro en de ACTIE van 1 euro voor de eerste maand*</p>
<?php if($posted&&!$Naam)echo '<p style="color:#f00">U moet akkoord gaan met de betaling.</p>';?>
<p><input type="checkbox" name="Nieuwsbrief" value="Yes" <?php if(isset($_POST['Nieuwsbrief']))echo ' checked'; ?>> Ik ontvang graag nieuwsbrieven met extra informatie en tips!</p>
<p><input type="submit" value="Verstuur"></p>
</form>
<sup>*)</sup> Verplichte velden
</body>
</html>
<?php } ?>