php script voor contactformulier
Ik ben voor het eerst met php aan het werk, en moet eerlijk zeggen dat ik er nog vrij weinig van snap.
Wat ik graag wil doen is een SIMPEL contactformulier maken voor op mijn website. Momenteel zie ik het allemaal even niet meer, dus hoop dat er hier iemand is die me weer even een stukje vooruit kan helpen.
Ik heb nu onderstaand script staan, en moet zeggen dat het echt voor een groot deel soepel verloopt, echter zijn er 2 dingetjes waar ik tegen aan loop en krijg zelf de oplossing niet gevonden:
- zodra ik via de mail de info uit het ingevulde en verzonden contactformulier binnenkrijg, staat netjes alle info erin, behalve of iemand een vinkje heeft gezet in de checkbox van de nieuwsbrief. Dat kan ik dus niet terugzien in de mail. Ik heb al veel verschillende codes geprobeerd maar krijg het gewoon niet voor elkaar. (als ik het test, en dus zelf het formulier invul op mijn website is er geen probleem met invullen, kan aanvinken/uitvinken alles, het gaat dus puur om het feit dat de info hiervan niet bij mijn e-mailaccount binnenkomt. Wat doe ik fout?
- als er een bepaald/meerdere velden niet zijn ingevuld en er wordt op 'verstuur bericht' geklikt, komt men op een volledig witte pagina waar dan staat bijv: 'Helaas, het voornaam veld is verplicht maar is nu niet ingevuld'
Nu vind ik dat niet zo netjes met die witte pagina, liever in mijn eigen website stijl. Maar begreep via zoektocht op internet dat als ik die controle van de velden op de pagina van het formulier zelf wil doen ik dan moet werken met javascript? Ik houd het liever bij php, om niet nog een onbekende taal er voor mezelf bij te halen... Hoe kan ik dit dan het beste in php doen? (die controle hoeft van mij niet perse op de pagina van het formulier zelf als dit geen mogelijkheid is met php)
Sorry hoop dat mijn vraag niet al te uitgebreid is, en wist ook niet zeker of ik 2 vragen in 1 topic mocht plaatsen, zo niet zal ik het aanpassen.
De PHP code:
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
// Header e-mail instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers = "content-type: text/html;charset=utf-8\r\n";
$headers = "From: $email\n ".$_POST['voornaam']." <".$_POST['achternaam'].">\r\n"; // Headers, zodat we html kunnen gebruiken in de mail, en van wie de mail komt
$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht
// Invoer uit het contactformulier
$voornaam = trim($_POST['voornaam']); // trim gets rid of any white space
$achternaam = trim($_POST['achternaam']); // trim gets rid of any white space
$email = trim($_POST['email']); // trim gets rid of any white space
$bericht = trim($_POST['bericht']); // trim gets rid of any white space
$fout = false; // Om te kijken straks of er wat fout is
if(isset($_POST['newsletter'])) {
$newsletter = "yes";
} else {
$newsletter = "no";
}
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
if(isset($_POST['versturen'])) // CONTROLEREN OF HET FORMULIER VERZONDEN IS(DOOR OP DE VERSTUUR BERICHT KNOP TE KLIKKEN)
{
// ALS HET VOORNAAM VELD NIET IS INGEVULD
if(empty($voornaam))
{
print '<p>Helaas, het voornaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true; // ZORGEN DAT HET SCRIPT ZOMETEEN WEET DAT ER WAT FOUT IS
}
// ALS HET ACHTERNAAM VELD NIET IS INGEVULD
if(empty($achternaam))
{
print '<p>Helaas, het achternaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
// ALS HET EMAIL VELD NIET IS INGEVULD
if(empty($email))
{
print '<p>Helaas, het email veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
{
print '<p>Helaas, het email adres is niet correct!</p>';
$fout = true;
}
// ALS HET BERICHT VELD NIET IS INGEVULD
if(empty($bericht))
{
print '<p>Helaas, het bericht veld is verplicht maar is nu niet ingvuld!</p>';
$fout = true;
}
// ALS ER NIKS FOUT IS (ALLES IS DUS NETJES INGEVULD)
if($fout == false)
{
// EEN AFZENDER INSTELLEN ZODAT JE KUNT REAGEREN.
$headers = 'From: ' . $voornaam . ' ' . $achternaam . '<' . $email . '>';
// STUUR DEZE MAIL DOOR GEBRUIK TE MAKEN VAN PHPs mail() FUNCTIE
if(mail($naar, $onderwerp, nl2br($bericht), $headers))
// REDIRECT
header("Location:/bedankt.php");
else
{
header("Location:/fout.php");
}
}
}
?>
// Header e-mail instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers = "content-type: text/html;charset=utf-8\r\n";
$headers = "From: $email\n ".$_POST['voornaam']." <".$_POST['achternaam'].">\r\n"; // Headers, zodat we html kunnen gebruiken in de mail, en van wie de mail komt
$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht
// Invoer uit het contactformulier
$voornaam = trim($_POST['voornaam']); // trim gets rid of any white space
$achternaam = trim($_POST['achternaam']); // trim gets rid of any white space
$email = trim($_POST['email']); // trim gets rid of any white space
$bericht = trim($_POST['bericht']); // trim gets rid of any white space
$fout = false; // Om te kijken straks of er wat fout is
if(isset($_POST['newsletter'])) {
$newsletter = "yes";
} else {
$newsletter = "no";
}
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
if(isset($_POST['versturen'])) // CONTROLEREN OF HET FORMULIER VERZONDEN IS(DOOR OP DE VERSTUUR BERICHT KNOP TE KLIKKEN)
{
// ALS HET VOORNAAM VELD NIET IS INGEVULD
if(empty($voornaam))
{
print '<p>Helaas, het voornaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true; // ZORGEN DAT HET SCRIPT ZOMETEEN WEET DAT ER WAT FOUT IS
}
// ALS HET ACHTERNAAM VELD NIET IS INGEVULD
if(empty($achternaam))
{
print '<p>Helaas, het achternaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
// ALS HET EMAIL VELD NIET IS INGEVULD
if(empty($email))
{
print '<p>Helaas, het email veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
{
print '<p>Helaas, het email adres is niet correct!</p>';
$fout = true;
}
// ALS HET BERICHT VELD NIET IS INGEVULD
if(empty($bericht))
{
print '<p>Helaas, het bericht veld is verplicht maar is nu niet ingvuld!</p>';
$fout = true;
}
// ALS ER NIKS FOUT IS (ALLES IS DUS NETJES INGEVULD)
if($fout == false)
{
// EEN AFZENDER INSTELLEN ZODAT JE KUNT REAGEREN.
$headers = 'From: ' . $voornaam . ' ' . $achternaam . '<' . $email . '>';
// STUUR DEZE MAIL DOOR GEBRUIK TE MAKEN VAN PHPs mail() FUNCTIE
if(mail($naar, $onderwerp, nl2br($bericht), $headers))
// REDIRECT
header("Location:/bedankt.php");
else
{
header("Location:/fout.php");
}
}
}
?>
je overschrijft tot drie keer aan toe de $headers variabele. Als je een variabele met tekst (string) aan een andere string wilt toevoegen dan kun je de . (punt) gebruiken.
of:
Verder zou je kunnen overwegen om de fouten niet direct te echo-en maar eerst even in een variabele te zetten.
Op regel 82 ga je naar een gebruiker doorsturen naar een aparte pagina om daar de foutmeldingen te tonen.
Tipje:
Hou alles op één pagina. Ook je <form>. Stuur de gebruiker pas door naar een andere pagina als alles goed ingevuld is en het bericht verzonden is. Zolang het formulier niet ingevuld is laat je gewoon telkens dezelfde pagina zien.
Zet in deze ene pagina je PHP code bovenin en je formulier/html onderin. Zet tussen die html ook echo's die de foutmeldingen laten zien. er zijn verschillende manieren om foutmeldingen verborgen te houden als deze niet gezien hoeven te worden maar het meest makkelijk is wellicht om de string leeg te laten als het veld goed ingevuld is. een lege string ( $fout1 = '' ) zie je immers niet.
Beetje deze structuur:
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
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
<?php
function validate()
{
// ............
return true;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST')
if(validate())
{
// ... email versturen
// nu naar een andere pagina sturen
header('Location: index.php');
}
?>
<html>
<head>
<title>Contact</title>
<meta charset="UTF-8">
</head>
<body>
<form action="" method="post">
<!-- formuliervelden -->
</form>
</body>
</html
function validate()
{
// ............
return true;
}
if ($_SERVER['REQUEST_METHOD'] == 'POST')
if(validate())
{
// ... email versturen
// nu naar een andere pagina sturen
header('Location: index.php');
}
?>
<html>
<head>
<title>Contact</title>
<meta charset="UTF-8">
</head>
<body>
<form action="" method="post">
<!-- formuliervelden -->
</form>
</body>
</html
Gewijzigd op 09/12/2014 01:06:36 door Frank Nietbelangrijk
ANTWOORD:
ik ben niet zo bekend met de checkboxen.
- als er een bepaald/meerdere velden niet zijn ingevuld en er wordt op 'verstuur bericht' geklikt, komt men op een volledig witte pagina waar dan staat bijv: 'Helaas, het voornaam veld is verplicht maar is nu niet ingevuld'
Nu vind ik dat niet zo netjes met die witte pagina, liever in mijn eigen website stijl. Maar begreep via zoektocht op internet dat als ik die controle van de velden op de pagina van het formulier zelf wil doen ik dan moet werken met javascript? Ik houd het liever bij php, om niet nog een onbekende taal er voor mezelf bij te halen... Hoe kan ik dit dan het beste in php doen? (die controle hoeft van mij niet perse op de pagina van het formulier zelf als dit geen mogelijkheid is met php)
ANTWOORD:
hiervoor kan je javascript gebruiken form validator.
Zet dat maar eens bovenin je script.
Javascript is absoluut niet perse nodig. Zoals ik al eerder aangaf kun je met php prima foutmeldingen genereren.
Alleen als je wilt dat je pagina niet ververst wordt is javascript wel een must.
Wat houd pre in?
Bovenste is:
http://stackoverflow.com/questions/4554758/how-to-read-if-a-checkbox-is-checked-in-php
En dat werkt dan zou je code er zo iets uit moeten zien
Code (php)
1
2
3
4
5
2
3
4
5
if (isset($_POST['checkbox'])) {
echo "Whoe hij is gezet";
} else {
echo "jammer joh hij is niet gezet";
}
echo "Whoe hij is gezet";
} else {
echo "jammer joh hij is niet gezet";
}
Naast dat zou ik aanraden ook het aantal tekens in bericht te tellen anders kan je zo honderd berichten heel gemakelijk binnen krijgen, dus bijvoorbeeld
Ik heb er dus nu 1 document van gemaakt met html en php in 1 en het contact.php genoemd.
Ik heb met jullie info geprobeerd om mn document te verbeteren. Nu kan ik het alleen niet testen, want als ik het oproep krijg ik de foutmelding
Parse error: syntax error, unexpected '(', expecting '&' or T_VARIABLE op regel 74. Ik had al het vermoeden dat ik dat stukje niet goed had gedaan, maar hoe moet het dan??
Wellicht zitten er ook nog meer fouten in buiten die regel 74, maar dat kan ik nu dus niet zien.
Wat moet ik bijv bij dat gedeelte van function validate zetten?
Super bedankt alvast weer!!
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
// Kijken welke gegevens er gestuurd zijn naar deze pagina
echo '<pre>';
print_r($_POST);
echo '</pre>';
// Header e-mail instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers = "content-type: text/html;charset=utf-8\r\n";
$headers .= "From: $email\n ".$_POST['voornaam']." <".$_POST['achternaam'].">\r\n"; // EEN AFZENDER INSTELLEN ZODAT JE KUNT REAGEREN.
$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht
// Invoer uit het contactformulier
$voornaam = trim($_POST['voornaam']); // trim gets rid of any white space
$achternaam = trim($_POST['achternaam']); // trim gets rid of any white space
$email = trim($_POST['email']); // trim gets rid of any white space
$bericht = trim($_POST['bericht']); // trim gets rid of any white space
$fout = false; // Om te kijken straks of er wat fout is
if (strlen($_POST['bericht']) <= 9){
print '<p>Helaas, het bericht moet minimaal 10 tekens bevatten</p>';
$fout = true;
}
if (isset($_POST['newsletter'])) {
echo "nieuwsbrief ja";
} else {
echo "nieuwsbrief nee";
}
if(isset($_POST['versturen'])) // CONTROLEREN OF HET FORMULIER VERZONDEN IS(DOOR OP DE VERSTUUR BERICHT KNOP TE KLIKKEN)
{
if (!empty($_POST)) {
//formulier is verzonden
//controleer velden:
if (empty($_POST['voornaam'])) $veldfout['voornaam'] = TRUE;
if (empty($_POST['achternaam'])) $veldfout['achternaam'] = TRUE;
if (empty($_POST['email'])) $veldfout['email'] = TRUE;
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
{
if (empty($_POST['bericht'])) $veldfout['bericht'] = TRUE;
//afhandeling
if (isset($veldfout)) {
//formulier incorrect ingevuld
echo 'Niet alle velden zijn ingevuld.';
}
else {
//formulier correct
echo 'Alle velden zijn ingevuld.';
}
function validate()
{
// wat moet ik hier zetten???
return true;
}
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
if(validate())
{
// ... email versturen
function mail($naar, $onderwerp, nl2br($bericht), $headers .)
{
// nu naar een andere pagina sturen
header('Location: bedankt.php');
}
}
}
?>
// Kijken welke gegevens er gestuurd zijn naar deze pagina
echo '<pre>';
print_r($_POST);
echo '</pre>';
// Header e-mail instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers = "content-type: text/html;charset=utf-8\r\n";
$headers .= "From: $email\n ".$_POST['voornaam']." <".$_POST['achternaam'].">\r\n"; // EEN AFZENDER INSTELLEN ZODAT JE KUNT REAGEREN.
$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht
// Invoer uit het contactformulier
$voornaam = trim($_POST['voornaam']); // trim gets rid of any white space
$achternaam = trim($_POST['achternaam']); // trim gets rid of any white space
$email = trim($_POST['email']); // trim gets rid of any white space
$bericht = trim($_POST['bericht']); // trim gets rid of any white space
$fout = false; // Om te kijken straks of er wat fout is
if (strlen($_POST['bericht']) <= 9){
print '<p>Helaas, het bericht moet minimaal 10 tekens bevatten</p>';
$fout = true;
}
if (isset($_POST['newsletter'])) {
echo "nieuwsbrief ja";
} else {
echo "nieuwsbrief nee";
}
if(isset($_POST['versturen'])) // CONTROLEREN OF HET FORMULIER VERZONDEN IS(DOOR OP DE VERSTUUR BERICHT KNOP TE KLIKKEN)
{
if (!empty($_POST)) {
//formulier is verzonden
//controleer velden:
if (empty($_POST['voornaam'])) $veldfout['voornaam'] = TRUE;
if (empty($_POST['achternaam'])) $veldfout['achternaam'] = TRUE;
if (empty($_POST['email'])) $veldfout['email'] = TRUE;
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
{
if (empty($_POST['bericht'])) $veldfout['bericht'] = TRUE;
//afhandeling
if (isset($veldfout)) {
//formulier incorrect ingevuld
echo 'Niet alle velden zijn ingevuld.';
}
else {
//formulier correct
echo 'Alle velden zijn ingevuld.';
}
function validate()
{
// wat moet ik hier zetten???
return true;
}
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
if(validate())
{
// ... email versturen
function mail($naar, $onderwerp, nl2br($bericht), $headers .)
{
// nu naar een andere pagina sturen
header('Location: bedankt.php');
}
}
}
?>
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
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="contact.php">
<ul>
<li>Je voornaam *</li>
<li><input type="text" name="voornaam" /></li>
<?php if ($veldfout['voornaam'] == TRUE) echo 'Voornaam verplicht:<br />'; ?>
<br>
<br>
<li>Je achternaam *</li>
<li><input type="text" name="achternaam" /></li>
<?php if ($veldfout['achternaamnaam'] == TRUE) echo 'Achternaam verplicht:<br />'; ?>
<br>
<br>
<li>Je e-mail adres *</li>
<li><input type="text" name="email" /></li>
<?php if ($veldfout['email'] == TRUE) echo 'Email verplicht:<br />'; ?>
<br>
<br>
<li>Bericht *</li><br>
<li><textarea cols="50" rows="12" name="bericht" wrap="virtual"></textarea></li>
<?php if ($veldfout['bericht'] == TRUE) echo 'Bericht verplicht:<br />'; ?>
<br>
<br>
<input type="checkbox" name="newsletter" value="newsletteryes" checked <?PHP print $newsletter; ?>>
<label for="newsletter">Ja, ik ontvang graag de nieuwsbrief</label><br>
<br>
<br>
<li><input type="reset" value="Begin opnieuw" /> <input type="submit" name="versturen" value="Verstuur bericht" /></li>
</ul>
<p>Alle velden gemarkeerd met een * zijn verplicht.</p>
<br>
<br>
</form>
</body>
</html>
Gewijzigd op 14/12/2014 23:10:43 door Sammied D
Frank Nietbelangrijk op 14/12/2014 22:54:23:
kun je de code die je gepost hebt even tusen [ c o d e ] en [ / c o d e ] (maar dan zonder spaties) zetten?
Zie ook veel gestelde vragen
Zie ook veel gestelde vragen
Excuses! Heb ik nu gedaan!
Het onderste stukje van je code klopt niet erg en dan gaat het om echt simpele basic dingetjes
haakje open en sluiten anders klopt het niet. Gebruik je wel een PHP editor?
Code (php)
Ik denk dat met name fucties nog nieuw zijn voor je. Er zijn een tweetal functies:
a) functies die al in PHP aanwezig zijn. Deze zijn allemaal terug te vinden op php.net. mail() is een voorbeeld van een standaard php functie.
b) functies die je zelf geschreven hebt. Mijn validate() functie is daar een voorbeeld van.
Zie voor zelf functies schrijven deze pagina: http://www.phptuts.nl/view/39/7/
De bedoeling van die validate functie is dat je daarin een aantal testjes doet om te kijken of het formulier wel goed ingevuld is.
Toevoeging op 15/12/2014 00:36:38:
Als je het niet erg vindt beginnen we even opnieuw. We laten het hele email gebeuren er nog even uit. Ik heb hier een werkend begin voor je zoals het op een juiste manier kan. Het formulier heeft nog maar één invoerveld. Kijk maar eens goed hoe dit werkt (testen!).
Probeer daarna één ander formulierveld toe te voegen en ook deze te valideren. Die email versturen komt wel helemaal aan het einde als het formulier goed werkt.
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
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
<?php
function validate()
{
global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
$error = 'Vul aub uw naam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}
// initialisatie van de variabelen
$error = '';
$voornaam = '';
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
{
$voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
{
// mail($naar, $onderwerp, nl2br($bericht), $headers);
// nu naar een andere pagina sturen
header('Location: bedankt.php');
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Contactform</title>
<meta charset="UTF-8">
</head>
<body>
<form method="post" action="">
<div id="error">
<?php echo $error; ?>
</div>
<div class="form-row">
<label for="voornaam">Je voornaam *</label>
<input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
</div>
<div class="form-row">
<input type="submit" value="Verzenden" />
</div>
</form>
</body>
</html>
function validate()
{
global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
$error = 'Vul aub uw naam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}
// initialisatie van de variabelen
$error = '';
$voornaam = '';
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
{
$voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
{
// mail($naar, $onderwerp, nl2br($bericht), $headers);
// nu naar een andere pagina sturen
header('Location: bedankt.php');
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Contactform</title>
<meta charset="UTF-8">
</head>
<body>
<form method="post" action="">
<div id="error">
<?php echo $error; ?>
</div>
<div class="form-row">
<label for="voornaam">Je voornaam *</label>
<input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
</div>
<div class="form-row">
<input type="submit" value="Verzenden" />
</div>
</form>
</body>
</html>
Gewijzigd op 15/12/2014 00:39:39 door Frank Nietbelangrijk
Ik heb het nieuwe script verder uitgewerkt, zie hieronder. Ik heb het ook getest en het werkt helemaal prima! :)
Ik heb alleen de nieuwsbrief checkbox er nog niet bijgezet, omdat ik nog steeds niet zo goed weet hoe ik dat nou moet doen, zodat ik het ook kan zien in de mail die ik binnenkrijg als iemand deze heeft aangevinkt. (de code van hierboven die gegeven werd had ik ook al geprobeerd maar daarmee kreeg ik ook geen notitie in de mail ervan. Ik weet dat je dit alleen kunt zien als het is aangevinkt maar als ik het test als het aangevinkt is zie ik het nog niet) Overigens lees ik ook op internet dat ik beter een radio button kan gebruiken voor de nieuwbrief ipv de checkbox?? (omdat het maar om 1 keuze gaat)
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
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
<?php
function validate()
{
global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
$error = 'Vul aub uw voornaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['achternaam']) < 2) { // als de achternaam korter is als twee karakters
$error = 'Vul aub uw achternaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['email']) < 6) { // als het e-mailadres korter is als zes karakters
$error = 'Vul aub uw e-mail adres in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['bericht']) < 9) { // als het bericht korter is als negen karakters
$error = 'Uw bericht is te kort. Uw bericht moet minstens 10 karakters bevatten. ';
return FALSE; // verlaat de functie en geef een FALSE terug
}
return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}
// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
{
$voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
$achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
$email = $_POST['email']; // overschrijf de waarde van de variabele $email
$bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht
if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
{
// mail($naar, $onderwerp, nl2br($bericht), $headers);
// nu naar een andere pagina sturen
header('Location: bedankt.php');
}
}
?>
function validate()
{
global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
$error = 'Vul aub uw voornaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['achternaam']) < 2) { // als de achternaam korter is als twee karakters
$error = 'Vul aub uw achternaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['email']) < 6) { // als het e-mailadres korter is als zes karakters
$error = 'Vul aub uw e-mail adres in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['bericht']) < 9) { // als het bericht korter is als negen karakters
$error = 'Uw bericht is te kort. Uw bericht moet minstens 10 karakters bevatten. ';
return FALSE; // verlaat de functie en geef een FALSE terug
}
return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}
// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
{
$voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
$achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
$email = $_POST['email']; // overschrijf de waarde van de variabele $email
$bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht
if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
{
// mail($naar, $onderwerp, nl2br($bericht), $headers);
// nu naar een andere pagina sturen
header('Location: bedankt.php');
}
}
?>
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
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="contact.php">
<div id="error">
<?php echo $error; ?>
</div>
<div class="form-row">
<label for="voornaam">Je voornaam *</label>
<input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
</div>
<br>
<div class="form-row">
<label for="achternaam">Je achternaam *</label>
<input type="text" id="achternaam" name="achternaam" value="<?php echo $achternaam; ?>" />
</div>
<br>
<div class="form-row">
<label for="email">Je e-mail adres *</label>
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
</div>
<br>
<div class="form-row">
<label for="bericht">Je bericht *</label>
<textarea cols="50" rows="12" name="bericht" wrap="virtual" value="<?php echo $bericht; ?>" ></textarea>
</div>
<br>
<div class="form-row">
<input type="submit" value="Verzenden" />
</div>
<p>Alle velden gemarkeerd met een * zijn verplicht.</p>
<br>
<br>
</form>
</body>
</html>
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="contact.php">
<div id="error">
<?php echo $error; ?>
</div>
<div class="form-row">
<label for="voornaam">Je voornaam *</label>
<input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
</div>
<br>
<div class="form-row">
<label for="achternaam">Je achternaam *</label>
<input type="text" id="achternaam" name="achternaam" value="<?php echo $achternaam; ?>" />
</div>
<br>
<div class="form-row">
<label for="email">Je e-mail adres *</label>
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
</div>
<br>
<div class="form-row">
<label for="bericht">Je bericht *</label>
<textarea cols="50" rows="12" name="bericht" wrap="virtual" value="<?php echo $bericht; ?>" ></textarea>
</div>
<br>
<div class="form-row">
<input type="submit" value="Verzenden" />
</div>
<p>Alle velden gemarkeerd met een * zijn verplicht.</p>
<br>
<br>
</form>
</body>
</html>
Officieel betaald maar je kan ook crack krijgen
Met $_POST['newsletter'] kan je dan kijken of diegene een nieuwsbrief wilt. Deze variabele kan je in je mail() gebruiken.
Sammied D op 18/12/2014 23:47:42:
Ik gebruik Notepad++, kan ik beter iets anders gebruiken?
Ja, het beste is een IDE. Bijvoorbeeld het gratis NetBeans. Dergelijke programma's geven kleurtjes aan je code en wijzen je op tekstuele fouten. En dat is maar een heel klein stukje van de mogelijkheden die een IDE je biedt.
Toevoeging op 19/12/2014 10:39:00:
Een checkbox is voor jouw nieuwsbrief het meest logisch
Toevoeging op 19/12/2014 10:52:37:
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
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
<?php
// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
$nieuwsbericht = false;
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
{
$voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
$achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
$email = $_POST['email']; // overschrijf de waarde van de variabele $email
$bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht
if(isset($_POST['newsletter']))
$nieuwsbericht = true;
if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
{
// mail($naar, $onderwerp, nl2br($bericht), $headers);
// nu naar een andere pagina sturen
header('Location: bedankt.php');
}
}
?>
<div class="form-row">
<input type="checkbox" id="newsletter" name="newsletter" value="1" <?php if($nieuwsbericht) echo 'checked="checked"'; ?> />
<label for="newsletter">Ik wil de nieuwsbrief!</label>
</div>
// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
$nieuwsbericht = false;
if($_SERVER['REQUEST_METHOD'] == 'POST') // Controle of een formulier gepost is
{
$voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
$achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
$email = $_POST['email']; // overschrijf de waarde van de variabele $email
$bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht
if(isset($_POST['newsletter']))
$nieuwsbericht = true;
if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
{
// mail($naar, $onderwerp, nl2br($bericht), $headers);
// nu naar een andere pagina sturen
header('Location: bedankt.php');
}
}
?>
<div class="form-row">
<input type="checkbox" id="newsletter" name="newsletter" value="1" <?php if($nieuwsbericht) echo 'checked="checked"'; ?> />
<label for="newsletter">Ik wil de nieuwsbrief!</label>
</div>
Toevoeging op 19/12/2014 10:59:32:
regel 9, 18,19, 30 t/m 33 overnemen in je bestaande code zou je formulier compleet moeten maken.
Daarna kun je de tekst in je email aanpassen met bijvoorbeeld:
(heb overigens ook geprobeerd NetBeans te installeren, maar dat lukte niet met de melding omdat ik een 32-bits systeem heb) Ik ben ook niet van plan om PHP nog verder te gebruiken nadat ik dit scriptje werkend heb.
Onderstaand het script zoals ik het nu heb. Wanneer ik een test uitvoer en dus het contactformulier invul op mijn website en verstuur, krijg ik het gewoon netjes binnen in mijn e-mailbox. Maar het probleem wat zich nu voordoet is dat er helemaal niks in de mail staat! De enige info die ik zie in de mail is de voornaam van de afzender en het onderwerp. Terwijl ik toch gewoon alle gegevens op de website in het contactformulier gewoon volledig in heb gevuld, dus voornaam, achternaam, e-mailadres, bericht, nieuwsbrief aangevinkt. Maar dit krijg ik dus allemaal niet door.
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?php
if(isset($_POST['verzendenknop'])) {
// HEADERS
$headers = "From: $email\n ".$_POST['voornaam']." <".$_POST['achternaam'].">\r\n"; // de afzender
$headers .= "Reply-To: $email ($voornaam)\r\n";
$headers .= "Return-Path: $email ($voornaam)\r\n";
// headers voor html-mail:
$headers .= "MIME-version: 1.0\r\n"; // geeft aan dat het bericht gebruik maakt van de Multipurpose Internet Mail Extensions (MIME). Staat toe HTML in emailberichten te gebruiken.
$headers .= "content-type: text/html;charset=utf-8\r\n"; // geeft aan dat de inhoud een combinatie van tekst en HTML is en geeft tevens aan welke karakterset is gebruikt.
// overige mail-gerelateerde zaken
$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht
// Verstuur de e-mail
mail($naar, $onderwerp, nl2br($bericht), $headers);
function validate()
{
global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
$error = 'Vul aub uw voornaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['achternaam']) < 2) { // als de achternaam korter is als twee karakters
$error = 'Vul aub uw achternaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['email']) < 6) { // als het e-mailadres korter is als zes karakters
$error = 'Vul aub uw e-mail adres in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['bericht']) < 9) { // als het bericht korter is als negen karakters
$error = 'Uw bericht is te kort. Uw bericht moet minstens 10 karakters bevatten. ';
return FALSE; // verlaat de functie en geef een FALSE terug
}
return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}
// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
$nieuwsbericht = false;
if($nieuwsbericht) {
$bericht .= 'Gebruiker wenst een nieuwsbrief te ontvangen.';
} else {
$bericht .= 'Gebruiker wenst GEEN nieuwsbrief te ontvangen.';
}
// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Invoer uit het contactformulier
$voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
$achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
$email = $_POST['email']; // overschrijf de waarde van de variabele $email
$bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht
if(isset($_POST['newsletter']))
$nieuwsbericht = true;
if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
{
// mail($naar, $onderwerp, nl2br($bericht), $headers);
// nu naar een andere pagina sturen
header('Location: bedankt.php');
}
}
}
?>
if(isset($_POST['verzendenknop'])) {
// HEADERS
$headers = "From: $email\n ".$_POST['voornaam']." <".$_POST['achternaam'].">\r\n"; // de afzender
$headers .= "Reply-To: $email ($voornaam)\r\n";
$headers .= "Return-Path: $email ($voornaam)\r\n";
// headers voor html-mail:
$headers .= "MIME-version: 1.0\r\n"; // geeft aan dat het bericht gebruik maakt van de Multipurpose Internet Mail Extensions (MIME). Staat toe HTML in emailberichten te gebruiken.
$headers .= "content-type: text/html;charset=utf-8\r\n"; // geeft aan dat de inhoud een combinatie van tekst en HTML is en geeft tevens aan welke karakterset is gebruikt.
// overige mail-gerelateerde zaken
$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht
// Verstuur de e-mail
mail($naar, $onderwerp, nl2br($bericht), $headers);
function validate()
{
global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
$error = 'Vul aub uw voornaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['achternaam']) < 2) { // als de achternaam korter is als twee karakters
$error = 'Vul aub uw achternaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['email']) < 6) { // als het e-mailadres korter is als zes karakters
$error = 'Vul aub uw e-mail adres in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['bericht']) < 9) { // als het bericht korter is als negen karakters
$error = 'Uw bericht is te kort. Uw bericht moet minstens 10 karakters bevatten. ';
return FALSE; // verlaat de functie en geef een FALSE terug
}
return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}
// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
$nieuwsbericht = false;
if($nieuwsbericht) {
$bericht .= 'Gebruiker wenst een nieuwsbrief te ontvangen.';
} else {
$bericht .= 'Gebruiker wenst GEEN nieuwsbrief te ontvangen.';
}
// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Invoer uit het contactformulier
$voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
$achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
$email = $_POST['email']; // overschrijf de waarde van de variabele $email
$bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht
if(isset($_POST['newsletter']))
$nieuwsbericht = true;
if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
{
// mail($naar, $onderwerp, nl2br($bericht), $headers);
// nu naar een andere pagina sturen
header('Location: bedankt.php');
}
}
}
?>
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
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="contact.php">
<div id="error">
<?php echo $error; ?>
</div>
<div class="form-row">
<label for="voornaam">Je voornaam *</label>
<input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
</div>
<br>
<div class="form-row">
<label for="achternaam">Je achternaam *</label>
<input type="text" id="achternaam" name="achternaam" value="<?php echo $achternaam; ?>" />
</div>
<br>
<div class="form-row">
<label for="email">Je e-mail adres *</label>
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
</div>
<br>
<div class="form-row">
<label for="bericht">Je bericht *</label>
<textarea cols="50" rows="12" name="bericht" wrap="virtual" value="<?php echo $bericht; ?>" ></textarea>
</div>
<br>
<div class="form-row">
<input type="checkbox" id="newsletter" name="newsletter" value="1" <?php if($nieuwsbericht) echo 'checked="checked"'; ?> />
<label for="newsletter">Ja, ik ontvang graag de nieuwsbrief</label>
</div>
<div class="form-row">
<input type="submit" name="verzendenknop" value="Verzenden" />
</div>
<p>Alle velden gemarkeerd met een * zijn verplicht.</p>
<br>
<br>
</form>
</body>
</html>
Je kan ook direct $_POST['bericht'] in je mail() gebruiken.
mysql_real_escape_string
Kuch Kuch
Kevin Jager op 21/12/2014 07:40:03:
Kuch kuch
mysql_real_escape_string
Kuch Kuch
mysql_real_escape_string
Kuch Kuch
Hoezo? Waar zie jij een database?
http://www.software.akker-huis.nl/php-designer.php
Toevoeging op 21/12/2014 14:48:51:
Nou vooruit omdat het bijna kerst is ..
Het is gewoon één bestand!
Misschien kun je deze installeren: Toevoeging op 21/12/2014 14:48:51:
Nou vooruit omdat het bijna kerst is ..
Het is gewoon één bestand!
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?php
function validate()
{
global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
$error = 'Vul aub uw voornaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['achternaam']) < 2) { // als de achternaam korter is als twee karakters
$error = 'Vul aub uw achternaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['email']) < 6) { // als het e-mailadres korter is als zes karakters
$error = 'Vul aub uw e-mail adres in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['bericht']) < 9) { // als het bericht korter is als negen karakters
$error = 'Uw bericht is te kort. Uw bericht moet minstens 10 karakters bevatten. ';
return FALSE; // verlaat de functie en geef een FALSE terug
}
return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}
function sendMail($voornaam, $achternaam, $email, $bericht, $nieuwsbericht)
{
// HEADERS
$headers = "From: $email\n ".$voornaam." <".$achternaam.">\r\n"; // de afzender
$headers .= "Reply-To: $email ($voornaam)\r\n";
$headers .= "Return-Path: $email ($voornaam)\r\n";
// headers voor html-mail:
$headers .= "MIME-version: 1.0\r\n"; // geeft aan dat het bericht gebruik maakt van de Multipurpose Internet Mail Extensions (MIME). Staat toe HTML in emailberichten te gebruiken.
$headers .= "content-type: text/html;charset=utf-8\r\n"; // geeft aan dat de inhoud een combinatie van tekst en HTML is en geeft tevens aan welke karakterset is gebruikt.
// overige mail-gerelateerde zaken
$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht
if($nieuwsbericht) {
$bericht .= "\r\n" . 'Gebruiker wenst een nieuwsbrief te ontvangen.';
} else {
$bericht .= "\r\n" . 'Gebruiker wenst GEEN nieuwsbrief te ontvangen.';
}
// Verstuur de e-mail
return mail($naar, $onderwerp, $bericht, $headers);
}
// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
$nieuwsbericht = false;
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Invoer uit het contactformulier
$voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
$achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
$email = $_POST['email']; // overschrijf de waarde van de variabele $email
$bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht
if(isset($_POST['newsletter']))
$nieuwsbericht = true;
if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
{
if(sendMail($voornaam, $achternaam, $email, $bericht, $nieuwsbericht)) {
// nu naar een andere pagina sturen
header('Location: bedankt.php');
} else {
echo 'Het bericht kon helaas niet verzonden worden.';
}
exit;
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="">
<div id="error">
<?php echo $error; ?>
</div>
<div class="form-row">
<label for="voornaam">Je voornaam *</label>
<input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
</div>
<br>
<div class="form-row">
<label for="achternaam">Je achternaam *</label>
<input type="text" id="achternaam" name="achternaam" value="<?php echo $achternaam; ?>" />
</div>
<br>
<div class="form-row">
<label for="email">Je e-mail adres *</label>
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
</div>
<br>
<div class="form-row">
<label for="bericht">Je bericht *</label>
<textarea cols="50" rows="12" name="bericht" wrap="virtual" value="<?php echo $bericht; ?>" ></textarea>
</div>
<br>
<div class="form-row">
<input type="checkbox" id="newsletter" name="newsletter" value="1" <?php if($nieuwsbericht) echo 'checked="checked"'; ?> />
<label for="newsletter">Ja, ik ontvang graag de nieuwsbrief</label>
</div>
<div class="form-row">
<input type="submit" name="verzendenknop" value="Verzenden" />
</div>
<p>Alle velden gemarkeerd met een * zijn verplicht.</p>
<br>
<br>
</form>
</body>
</html>
function validate()
{
global $error; // we gebruiken de $error van de 'global space' anders zou deze variabele bij het verlaten van de functie niet meer in het geheugen aanwezig zijn
if(strlen($_POST['voornaam']) < 2) { // als de voornaam korter is als twee karakters
$error = 'Vul aub uw voornaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['achternaam']) < 2) { // als de achternaam korter is als twee karakters
$error = 'Vul aub uw achternaam in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['email']) < 6) { // als het e-mailadres korter is als zes karakters
$error = 'Vul aub uw e-mail adres in!';
return FALSE; // verlaat de functie en geef een FALSE terug
}
if(strlen($_POST['bericht']) < 9) { // als het bericht korter is als negen karakters
$error = 'Uw bericht is te kort. Uw bericht moet minstens 10 karakters bevatten. ';
return FALSE; // verlaat de functie en geef een FALSE terug
}
return TRUE; // uiteindelijk als er geen fouten gevonden zijn geven we een TRUE terug
}
function sendMail($voornaam, $achternaam, $email, $bericht, $nieuwsbericht)
{
// HEADERS
$headers = "From: $email\n ".$voornaam." <".$achternaam.">\r\n"; // de afzender
$headers .= "Reply-To: $email ($voornaam)\r\n";
$headers .= "Return-Path: $email ($voornaam)\r\n";
// headers voor html-mail:
$headers .= "MIME-version: 1.0\r\n"; // geeft aan dat het bericht gebruik maakt van de Multipurpose Internet Mail Extensions (MIME). Staat toe HTML in emailberichten te gebruiken.
$headers .= "content-type: text/html;charset=utf-8\r\n"; // geeft aan dat de inhoud een combinatie van tekst en HTML is en geeft tevens aan welke karakterset is gebruikt.
// overige mail-gerelateerde zaken
$naar = '[email protected]'; // Waar moet het naartoe?
$onderwerp = 'Contactformulier via website'; // Het onderwerp van het bericht
if($nieuwsbericht) {
$bericht .= "\r\n" . 'Gebruiker wenst een nieuwsbrief te ontvangen.';
} else {
$bericht .= "\r\n" . 'Gebruiker wenst GEEN nieuwsbrief te ontvangen.';
}
// Verstuur de e-mail
return mail($naar, $onderwerp, $bericht, $headers);
}
// initialisatie van de variabelen
$error = '';
$voornaam = '';
$achternaam = '';
$email = '';
$bericht = '';
$nieuwsbericht = false;
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Invoer uit het contactformulier
$voornaam = $_POST['voornaam']; // overschrijf de waarde van de variabele $voornaam
$achternaam = $_POST['achternaam']; // overschrijf de waarde van de variabele $achternaam
$email = $_POST['email']; // overschrijf de waarde van de variabele $email
$bericht = $_POST['bericht']; // overschrijf de waarde van de variabele $bericht
if(isset($_POST['newsletter']))
$nieuwsbericht = true;
if(validate()) // we roepen onze functie validate aan en kijken of we een TRUE of FALSE terugkrijgen.
{
if(sendMail($voornaam, $achternaam, $email, $bericht, $nieuwsbericht)) {
// nu naar een andere pagina sturen
header('Location: bedankt.php');
} else {
echo 'Het bericht kon helaas niet verzonden worden.';
}
exit;
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<form method="post" action="">
<div id="error">
<?php echo $error; ?>
</div>
<div class="form-row">
<label for="voornaam">Je voornaam *</label>
<input type="text" id="voornaam" name="voornaam" value="<?php echo $voornaam; ?>" />
</div>
<br>
<div class="form-row">
<label for="achternaam">Je achternaam *</label>
<input type="text" id="achternaam" name="achternaam" value="<?php echo $achternaam; ?>" />
</div>
<br>
<div class="form-row">
<label for="email">Je e-mail adres *</label>
<input type="text" id="email" name="email" value="<?php echo $email; ?>" />
</div>
<br>
<div class="form-row">
<label for="bericht">Je bericht *</label>
<textarea cols="50" rows="12" name="bericht" wrap="virtual" value="<?php echo $bericht; ?>" ></textarea>
</div>
<br>
<div class="form-row">
<input type="checkbox" id="newsletter" name="newsletter" value="1" <?php if($nieuwsbericht) echo 'checked="checked"'; ?> />
<label for="newsletter">Ja, ik ontvang graag de nieuwsbrief</label>
</div>
<div class="form-row">
<input type="submit" name="verzendenknop" value="Verzenden" />
</div>
<p>Alle velden gemarkeerd met een * zijn verplicht.</p>
<br>
<br>
</form>
</body>
</html>
Gewijzigd op 22/12/2014 23:37:44 door Frank Nietbelangrijk
Oh echt onwijs bedankt Frank Nietbelangrijk!! Hij doet het nu weer!! Het mailtje komt goed binnen!! Alleen er is nu nog 1 dingetje wat raar doet...ik heb het meerdere keren getest en zowel wanneer ik de checkbox aanvink als wanneer ik de checkbox niet aanvink, krijg ik in de mail te staan 'Gebruiker wenst GEEN nieuwsbrief te ontvangen'. Hoe kan dit?