Door
Diego De Wilde
op 11-04-2015 16:56
gewijzigd op 11-04-2015 17:12
2.384 views
Beste forumleden
Ik probeer een contactformulier in mijn html-pagina effectief werkend te maken.
Echter blijft het al dagen bij proberen, en lukt het me ondanks vele tutorials niet.
Edit: Als er op de button geklikt wordt, wordt het script gewoon weergegeven.
Zou iemand mij kunnen helpen?
if ($_POST['submit']) {
if (mail ($to, $subject, $body, $from)) {
echo '<p>Je bericht werd succesvol verzonden.</p><p><a href="index.html">Ga terug naar de website.</a></p>';
} else {
echo '<p>Er is iets foutgelopen. Gelieve terug te gaan en het bericht opnieuw te versturen.</p>';
}
}
?>
Misschien is het bij het vraagstellen ook handig om even aan te geven wat er mis is.
Dat je het al dagen probeert, is geen aanwijzing wát er misgaat.
Wel zie ik een aantal veiligheidsproblemen:
nooit rechtstreeks gebruikersinvoer in de mail-headers gooien.
Subject, en from-headers kunnen gemaninpuleerd worden.
Als iemand enters toevoegt aan het subject, kan hij zo je mailscript kapen en voor jouw rekening mails rondspammen
Misschien is het bij het vraagstellen ook handig om even aan te geven wat er mis is.
Dat je het al dagen probeert, is geen aanwijzing wát er misgaat.
Wel zie ik een aantal veiligheidsproblemen:
nooit rechtstreeks gebruikersinvoer in de mail-headers gooien.
Subject, en from-headers kunnen gemaninpuleerd worden.
Als iemand enters toevoegt aan het subject, kan hij zo je mailscript kapen en voor jouw rekening mails rondspammen
Als er op de button geklikt wordt, wordt het script gewoon weergegeven.
Ik ben student, heb (nog) geen enkele ervaring met php.
Ja dat klopt. Je gebruikt een if/else statement om een boodschap aan de gebruiker te tonen maar daarna zal het script gewoon altijd hetzelfde doorlopen.
Ik heb hier een script dat een naam en mailadres laat invullen, compleet met afhandeling en een redirect naar een bedankpagina. Advies is om met dit script te beginnen en dan stap voor stap uit te breiden.
Als je vragen hebt laat het dan weten.
<?php
// functie die de formuliervelden valideert en foutmeldingen aanmaakt
function validate($naam, $email)
{
$errors = array();
// validatieregels voor de naam
if(strlen($naam) < 2)
$errors[] = 'U heeft geen naam ingevuld.';
// validatieregels voor het mailadres
if(!strlen($email))
$errors[] = 'U heeft geen email adres ingevuld.';
else if(!filter_var($email, FILTER_VALIDATE_EMAIL))
$errors[] = 'U heeft een ongeldig email adres ingevuld.';
// geef de array met foutmeldingen terug
return $errors;
}
// initialisatie van de variabelen
// Zorgt er voor dat variabelen altijd bestaan en een standaardwaarde hebben.
$naam = '';
$email = '';
$errors = array();
// indien het formulier verstuurd is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// overschrijf de standaardwaarden voor de waarden die ge-POST zijn
$naam = $_POST['naam'];
$email = $_POST['email'];
// valideer de ingevulde gegevens
$errors = validate($naam, $email);
// als er dan geen fouten zijn stuur de gebruiker door naar een bedank pagina
if(!count($errors))
{
// hier kun je nog een email versturen en/of de gegevens opslaan in de database
header('Location: bedankt.html');
exit;
}
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>een titel</title>
</head>
<body>
<ul id="errors">
<?php
foreach($errors as $error)
echo '<li>' . $error . '</li>';
?>
</ul>
<form action="" method="post">
<input type="text" name="naam" value="<?php echo $naam; ?>" />
<input type="email" name="email" value="<?php echo $email; ?>" />
<button type="submit">Verzenden</button>
</form>
</body>
</html>
[size=xsmall]Toevoeging op 11/04/2015 17:25:07:[/size]
Op regel 43/44 wordt de gebruiker doorgestuurd naar een andere pagina zodat het formulier niet nog eens getoond wordt als alles goed ingevuld is