Foutief Contactformulier
Ik ben nieuw op dit forum en wil even zeggen dat het er leuk uit ziet! :)
Maar nu mijn vraag, ik ben bezig met een website te bouwen voor een goed doel. Daar moet geld voor ingezameld worden en daarom houden we acties. Voor één van die acties leek het me leuk als je je kon opgeven via de website. Ik zocht dus op google een PHP Contactformulier en veranderde deze een beetje.
Nu ben ik een beetje thuis en HTML en nog niet zo goed in PHP waardoor mij dit toch niet gelukt is. Als ik namelijk de webpagina laad komt er dit:
Dit is mijn script:
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
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
<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
/*******************************
* CONTACT FORMULIER *
* contactformulier.php *
* *
* Author: Miranda Verburg *
* Datum: 10 september 2010 *
* *
* Pas het e-mail adres aan *
* bij $mail_ontv en upload *
* het naar je webserver.. *
********************************/
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; // <<<----- voer jouw e-mailadres hier in!
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['aantal']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw naam is niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, aantal, onderwerp of bijzonderheden vergeten in te vullen.</p>';
}
// HTML e-mail formlier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<label for="naam">Naam:</label><br />
<input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br />
<label for="mail">E-mailadres:</label><br />
<input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br />
<label for="aantal">Aantal:</label><br />
<input type="text" id="aantal" name="aantal" value="' . (isset($_POST['aantal']) ? htmlspecialchars($_POST['aantal']) : '') . '" /><br />
<label for="onderwerp">Onderwerp: (in dit geval vult u 'High Tea' in)</label><br />
<input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br />
<label for="bericht">Bijzonderheden: (als dit niet van toepassing is, vult u 'niks' of 'niet van toepassing' etc in)</label><br />
<textarea id="bericht" name="bericht" rows="8" style="width: 200px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br />
<input type="submit" name="submit" value=" Versturen " />
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Opgeven High Tea " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
$inhoud_mail .= "Aantal: " . htmlspecialchars($_POST['aantal']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Uw verzoek is verzonden</h1>
<p>Bedankt voor het deelnemen van deze actie.</p>';
}
else
{
echo '<h1>Uw verzoek is niet verzonden</h1>
<p><b>Onze excuses.</b> Uw verzoek kon niet verzonden worden.<br>Blijft dit probleem voorkomen, neem dan contact op met <b><a href="mailto:[email protected]">Naam plus achternaam: [email protected]</a></b></p>';
}
}
?>
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
/*******************************
* CONTACT FORMULIER *
* contactformulier.php *
* *
* Author: Miranda Verburg *
* Datum: 10 september 2010 *
* *
* Pas het e-mail adres aan *
* bij $mail_ontv en upload *
* het naar je webserver.. *
********************************/
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; // <<<----- voer jouw e-mailadres hier in!
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['aantal']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw naam is niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, aantal, onderwerp of bijzonderheden vergeten in te vullen.</p>';
}
// HTML e-mail formlier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<label for="naam">Naam:</label><br />
<input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br />
<label for="mail">E-mailadres:</label><br />
<input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br />
<label for="aantal">Aantal:</label><br />
<input type="text" id="aantal" name="aantal" value="' . (isset($_POST['aantal']) ? htmlspecialchars($_POST['aantal']) : '') . '" /><br />
<label for="onderwerp">Onderwerp: (in dit geval vult u 'High Tea' in)</label><br />
<input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br />
<label for="bericht">Bijzonderheden: (als dit niet van toepassing is, vult u 'niks' of 'niet van toepassing' etc in)</label><br />
<textarea id="bericht" name="bericht" rows="8" style="width: 200px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br />
<input type="submit" name="submit" value=" Versturen " />
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Opgeven High Tea " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
$inhoud_mail .= "Aantal: " . htmlspecialchars($_POST['aantal']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Uw verzoek is verzonden</h1>
<p>Bedankt voor het deelnemen van deze actie.</p>';
}
else
{
echo '<h1>Uw verzoek is niet verzonden</h1>
<p><b>Onze excuses.</b> Uw verzoek kon niet verzonden worden.<br>Blijft dit probleem voorkomen, neem dan contact op met <b><a href="mailto:[email protected]">Naam plus achternaam: [email protected]</a></b></p>';
}
}
?>
Het zou fijn zijn als iemand me kon helpen!
Alvast bedankt, Bart
En misschien al een start, dit gaat in elk geval fout:
<label for="onderwerp">Onderwerp: (in dit geval vult u 'High Tea' in)</label>
De hele string staat tussen enkele quotes, dus de quotes die je om High Tea hebt staan sluiten die string af. Je zal deze enkele quotes moeten escapen:
<label for="onderwerp">Onderwerp: (in dit geval vult u \'High Tea\' in)</label>
Zoals je nu weet ben ik nog niet zo thuis in php, maar nu heb ik weer wat geleerd. :)
Erwin H op 24/03/2013 12:48:10:
Tip 1: begin met structureel debuggen. Desnoods door regel voor regel te controleren of je script wordt uitgevoerd. Begin met een nieuw php bestand en kopieer daar regel voor regel (wel rekening houden met juiste afsluitende haakjes etc) bovenstaande in, per keer voer je het uit totdat het niet meer werkt. Dan weet je waar de fout zit.
En misschien al een start, dit gaat in elk geval fout:
<label for="onderwerp">Onderwerp: (in dit geval vult u 'High Tea' in)</label>
De hele string staat tussen enkele quotes, dus de quotes die je om High Tea hebt staan sluiten die string af. Je zal deze enkele quotes moeten escapen:
<label for="onderwerp">Onderwerp: (in dit geval vult u \'High Tea\' in)</label>
En misschien al een start, dit gaat in elk geval fout:
<label for="onderwerp">Onderwerp: (in dit geval vult u 'High Tea' in)</label>
De hele string staat tussen enkele quotes, dus de quotes die je om High Tea hebt staan sluiten die string af. Je zal deze enkele quotes moeten escapen:
<label for="onderwerp">Onderwerp: (in dit geval vult u \'High Tea\' in)</label>
Toevoeging op 24/03/2013 13:19:01:
Eigenlijk heb ik nog 2 vragen.
Vraag 1: Het liefst zou ik ook het invul vakje 'Onderwerp' weghalen en dat het onderwerp automatisch: 'Opgeven High Tea' word bij elke mail. Misschien weet je dit ook wel?
Vraag 2: Kan het zo zijn dat bij het vakje 'Bijzonderheden' al automatisch 'Geen bijzonderheden' staat. Zodat ze dit alleen hoeven te vervangen als dit van toepassing is?
Alvast bedankt!
Vraag 1:
Sloop alles wat met onderwerp te maken heeft, uit het script:
Op regel 39 staat wat, verwijder het deel over het onderwerp in je formulier (regels 66/67) en regel 110 t/m 112 kunnen er ook uit. Op regel 114 vervang je $_POST['onderwerp'] door 'High tea'
Vraag 2: regel 70 van de '' maak je 'geen bijzonderheden'
Obelix en Idefix op 24/03/2013 21:40:47:
Door zelf logisch na te denken (en wat te proberen), kun je op die beide vragen zelf een antwoord vinden.
Vraag 1:
Sloop alles wat met onderwerp te maken heeft, uit het script:
Op regel 39 staat wat, verwijder het deel over het onderwerp in je formulier (regels 66/67) en regel 110 t/m 112 kunnen er ook uit. Op regel 114 vervang je $_POST['onderwerp'] door 'High tea'
Vraag 2: regel 70 van de '' maak je 'geen bijzonderheden'
Vraag 1:
Sloop alles wat met onderwerp te maken heeft, uit het script:
Op regel 39 staat wat, verwijder het deel over het onderwerp in je formulier (regels 66/67) en regel 110 t/m 112 kunnen er ook uit. Op regel 114 vervang je $_POST['onderwerp'] door 'High tea'
Vraag 2: regel 70 van de '' maak je 'geen bijzonderheden'
Aller eerst bedankt voor het reageren.
Ik ben nog niet goed thuis in php en had al van alles geprobeerd. Wist echt geen raad meer, vandaar dat ik het hier postte.
Vraag 2 is me gelukt, maar als ik precies doe wat jij zegt bij vraag 1 krijg ik hetzelfde probleem...
Ik heb nu deze 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
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
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
<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
/*******************************
* CONTACT FORMULIER *
* contactformulier.php *
* *
* Author: Miranda Verburg *
* Datum: 10 september 2010 *
* *
* Pas het e-mail adres aan *
* bij $mail_ontv en upload *
* het naar je webserver.. *
********************************/
// E-mailadres van de ontvanger
$mail_ontv = 'email@website'; // <<<----- voer jouw e-mailadres hier in!
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht2']) || empty($_POST['bericht']) || empty($_POST['aantal']) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw naam is niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, aantal, onderwerp of bijzonderheden vergeten in te vullen.</p>';
}
// HTML e-mail formlier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<label for="naam">Uw naam:</label><br />
<input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br />
<label for="mail">E-mailadres: (we gebruiken dit om u op de hoogte te houden van evt. wijzigingen)</label><br />
<input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br />
<label for="aantal">Aantal:</label><br />
<input type="text" id="aantal" name="aantal" value="' . (isset($_POST['aantal']) ? htmlspecialchars($_POST['aantal']) : '') . '" /><br />
<label for="bericht2">Alle namen:</label><br />
<textarea id="bericht2" name="bericht2" rows="8" style="width: 200px;">' . (isset($_POST['bericht2']) ? htmlspecialchars($_POST['bericht2']) : '') . '</textarea><br />
<label for="bericht">Bijzonderheden:</label><br />
<textarea id="bericht" name="bericht" rows="8" style="width: 200px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : 'Niet van toepassing.') . '</textarea><br />
<input type="submit" name="submit" value=" Versturen " />
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Opgeven High Tea " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Uw naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
$inhoud_mail .= "Aantal: " . htmlspecialchars($_POST['aantal']) . "\n";
$inhoud_mail .= "Alle namen:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht2']) . "\n\n";
$inhoud_mail .= "Bijzonderheden:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
if (mail($mail_ontv, 'High Tea' , $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Uw verzoek is verzonden</h1>
<p>Bedankt voor het deelnemen van deze actie.</p>';
}
else
{
echo '<h1>Uw verzoek is niet verzonden</h1>
<p><b>Onze excuses.</b> Uw verzoek kon niet verzonden worden.<br>Blijft dit probleem voorkomen, neem dan contact op met <b><a href="mailto:[email protected]">Een naampje: email@website</a></b></p>';
}
}
?>
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
/*******************************
* CONTACT FORMULIER *
* contactformulier.php *
* *
* Author: Miranda Verburg *
* Datum: 10 september 2010 *
* *
* Pas het e-mail adres aan *
* bij $mail_ontv en upload *
* het naar je webserver.. *
********************************/
// E-mailadres van de ontvanger
$mail_ontv = 'email@website'; // <<<----- voer jouw e-mailadres hier in!
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (empty($_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht2']) || empty($_POST['bericht']) || empty($_POST['aantal']) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw naam is niet ingevuld.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, aantal, onderwerp of bijzonderheden vergeten in te vullen.</p>';
}
// HTML e-mail formlier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<label for="naam">Uw naam:</label><br />
<input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br />
<label for="mail">E-mailadres: (we gebruiken dit om u op de hoogte te houden van evt. wijzigingen)</label><br />
<input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br />
<label for="aantal">Aantal:</label><br />
<input type="text" id="aantal" name="aantal" value="' . (isset($_POST['aantal']) ? htmlspecialchars($_POST['aantal']) : '') . '" /><br />
<label for="bericht2">Alle namen:</label><br />
<textarea id="bericht2" name="bericht2" rows="8" style="width: 200px;">' . (isset($_POST['bericht2']) ? htmlspecialchars($_POST['bericht2']) : '') . '</textarea><br />
<label for="bericht">Bijzonderheden:</label><br />
<textarea id="bericht" name="bericht" rows="8" style="width: 200px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : 'Niet van toepassing.') . '</textarea><br />
<input type="submit" name="submit" value=" Versturen " />
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Opgeven High Tea " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Uw naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
$inhoud_mail .= "Aantal: " . htmlspecialchars($_POST['aantal']) . "\n";
$inhoud_mail .= "Alle namen:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht2']) . "\n\n";
$inhoud_mail .= "Bijzonderheden:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
if (mail($mail_ontv, 'High Tea' , $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Uw verzoek is verzonden</h1>
<p>Bedankt voor het deelnemen van deze actie.</p>';
}
else
{
echo '<h1>Uw verzoek is niet verzonden</h1>
<p><b>Onze excuses.</b> Uw verzoek kon niet verzonden worden.<br>Blijft dit probleem voorkomen, neem dan contact op met <b><a href="mailto:[email protected]">Een naampje: email@website</a></b></p>';
}
}
?>
Gewijzigd op 24/03/2013 22:03:30 door Bart Matsko
Bart Matsko op 24/03/2013 21:57:21:
Ik ben nog niet goed thuis in php en had al van alles geprobeerd. Wist echt geen raad meer, vandaar dat ik het hier postte.
Het is niet (alleen) php; een groot deel is (ook) html ;-)
Bart Matsko op 24/03/2013 21:57:21:
Vraag 2 is me gelukt, maar als ik precies doe wat jij zegt bij vraag 1 krijg ik hetzelfde probleem...
Wat bedoel je met 'hetzelfde probleem'? Melding over serverfout?
Ga dan terug naar de werkende versie en verwijder telkens een deel betreffende het onderwerp. Dan zie je vanzelf wanneer de fout ontstaat.
Obelix en Idefix op 24/03/2013 22:11:25:
Het is niet (alleen) php; een groot deel is (ook) html ;-)
Bart Matsko op 24/03/2013 21:57:21:
Ik ben nog niet goed thuis in php en had al van alles geprobeerd. Wist echt geen raad meer, vandaar dat ik het hier postte.
Het is niet (alleen) php; een groot deel is (ook) html ;-)
Ook in html & css ben ik nog niet goed thuis nee.
Obelix en Idefix op 24/03/2013 22:11:25:
Wat bedoel je met 'hetzelfde probleem'? Melding over serverfout?
Ga dan terug naar de werkende versie en verwijder telkens een deel betreffende het onderwerp. Dan zie je vanzelf wanneer de fout ontstaat.
Bart Matsko op 24/03/2013 21:57:21:
Vraag 2 is me gelukt, maar als ik precies doe wat jij zegt bij vraag 1 krijg ik hetzelfde probleem...
Wat bedoel je met 'hetzelfde probleem'? Melding over serverfout?
Ga dan terug naar de werkende versie en verwijder telkens een deel betreffende het onderwerp. Dan zie je vanzelf wanneer de fout ontstaat.
Vanaf het eerste stuk (regel 39), als ik weg haal, kan de pagina niet meer geladen worden...
Als je al die haakjes aan het eind weg haalt, ga je inderdaad problemen krijgen.
Voor elk ( zul je een ) moeten hebben. Net als voor bv elke { je een } moet hebben.
(Quote alleen als het toegevoegde waarde heeft, hele reacties hoeft doorgaans niet.)
Gewijzigd op 25/03/2013 20:18:14 door Obelix Idefix
Heel erg bedankt Obelix en Idefix! Het is me nu EIN-DE-LIJK gelukt! :) :)