Contactformulier: hulp
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?
HIER STAAT DE PAGINA ONLINE
De gebruikte html voor mijn formulier staat hieronder beschreven:
Quote:
<form action="form.php" method="post" enctype="multipart/form-data">
<h3 class="structural">Contactformulier</h3>
<dl>
<dt><label for="name">Naam:</label></dt>
<dd><input type="text" id="name" name="name" size="55"/></dd>
<dt><label for="email">Email:</label></dt>
<dd><input type="text" id="email" name="email" size="55"/></dd>
<dt><label for="subject">Onderwerp:</label></dt>
<dd><input type="text" id="subject" name="subject" size="55"/></dd>
<dt><label for="message">Bericht:</label></dt>
<dd><textarea id="message" name="message" cols="56" rows="15"></textarea></dd>
</dl>
<button type="submit" id="submit" name="submit">
<img src="img/icons/mail.ico" alt="verzenden"/> Verzenden
</button>
</form>
<h3 class="structural">Contactformulier</h3>
<dl>
<dt><label for="name">Naam:</label></dt>
<dd><input type="text" id="name" name="name" size="55"/></dd>
<dt><label for="email">Email:</label></dt>
<dd><input type="text" id="email" name="email" size="55"/></dd>
<dt><label for="subject">Onderwerp:</label></dt>
<dd><input type="text" id="subject" name="subject" size="55"/></dd>
<dt><label for="message">Bericht:</label></dt>
<dd><textarea id="message" name="message" cols="56" rows="15"></textarea></dd>
</dl>
<button type="submit" id="submit" name="submit">
<img src="img/icons/mail.ico" alt="verzenden"/> Verzenden
</button>
</form>
De gebruikte php heb ik in onderstaand formulier gezet.
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: Website De Kreeke';
$to = '[email protected]';
$subject = $_POST['subject'];
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
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>';
}
}
?>
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: Website De Kreeke';
$to = '[email protected]';
$subject = $_POST['subject'];
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
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>';
}
}
?>
Alvast bedankt!
Gewijzigd op 11/04/2015 17:12:30 door Diego De Wilde
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
Wordt php wel ondersteund?
Ivo P op 11/04/2015 17:06:10:
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
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.
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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?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>
// 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>
Toevoeging op 11/04/2015 17:25:07:
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
Obelix en Idefix op 11/04/2015 17:08:16:
Wordt php wel ondersteund?
ondersteund je hosting php?