Contactform
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
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
<?php
function output($string) {
echo '<div id="output">' . $string . '</div>';
}
// E-mailadres van de ontvanger
$mail_ontv = '**knip**'; //
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// 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['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($antiflood))
output('U mag slechts één bericht per ' . $seconde . ' seconde versturen.');
else
output('U bent een onderwerp of bericht vergeten in te vullen.');
}
// HTML e-mail formlier
echo '
<form name="register" method="post" action="">
<input type="text" placeholder="Teamname" name="teamname" style="width: 70%;" />
<input type="text" placeholder="Teamtag" name="teamtag" style="width: 26%;" /><br/>
<input type="text" placeholder="Email team captain" name="email" style="width: 98%;"/><br />
<input type="text" placeholder="Player 1 (team captain)" name="player1" style="width: 70%;" /> <input type="text" placeholder="Role" name="role1" style="width: 26%;" /><br />
<input type="text" placeholder="Player 2" name="player2" style="width: 70%;" /> <input type="text" placeholder="Role" name="role2" style="width: 26%;" /><br />
<input type="text" placeholder="Player 3" name="player3" style="width: 70%;" /> <input type="text" placeholder="Role" name="role3" style="width: 26%;" /><br />
<input type="text" placeholder="Player 4" name="player4" style="width: 70%;" /> <input type="text" placeholder="Role" name="role4" style="width: 26%;" /><br />
<input type="text" placeholder="Player 5" name="player5" style="width: 70%;" /> <input type="text" placeholder="Role" name="role5" style="width: 26%;" /><br />
<textarea name="info" placeholder="Additonal information" style="width: 98%;"></textarea><br />
<input type="submit" name="submit" style="width: 98%;" />
</form>
';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "=================\n";
$inhoud_mail .= "Verzonden via " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "=================\n\n";
$inhoud_mail .= "Teamnaam: " . htmlspecialchars($_POST['teamnaam']) . "\n";
$inhoud_mail .= "Teamtag: " . htmlspecialchars($_POST['teamtag']) . "\n";
$inhoud_mail .= "Email: " . htmlspecialchars($_POST['email']) . "\n";
$inhoud_mail .= "Player 1 (Teamcaptain): " . htmlspecialchars($_POST['player1']) . " Role: " . htmlspecialchars($_POST['role1']) . "\n";
$inhoud_mail .= "Player 2: " . htmlspecialchars($_POST['player2']) . " Role: " . htmlspecialchars($_POST['role2']) . "\n";
$inhoud_mail .= "Player 3: " . htmlspecialchars($_POST['player3']) . " Role: " . htmlspecialchars($_POST['role3']) . "\n";
$inhoud_mail .= "Player 4: " . htmlspecialchars($_POST['player4']) . " Role: " . htmlspecialchars($_POST['role4']) . "\n";
$inhoud_mail .= "Player 5: " . htmlspecialchars($_POST['player5']) . " Role: " . htmlspecialchars($_POST['role5']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['info']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['player1']) . ' <' . htmlspecialchars($_POST['email']) . '>';
$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'] = htmlspecialchars($_POST['teamtag']) . " aanmelding bftt";
if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
output('Het contactformulier is verzonden<br/><br/>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.');
}
else
{
output('Het contactformulier is niet verzonden');
}
}
?>
function output($string) {
echo '<div id="output">' . $string . '</div>';
}
// E-mailadres van de ontvanger
$mail_ontv = '**knip**'; //
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// 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['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($antiflood))
output('U mag slechts één bericht per ' . $seconde . ' seconde versturen.');
else
output('U bent een onderwerp of bericht vergeten in te vullen.');
}
// HTML e-mail formlier
echo '
<form name="register" method="post" action="">
<input type="text" placeholder="Teamname" name="teamname" style="width: 70%;" />
<input type="text" placeholder="Teamtag" name="teamtag" style="width: 26%;" /><br/>
<input type="text" placeholder="Email team captain" name="email" style="width: 98%;"/><br />
<input type="text" placeholder="Player 1 (team captain)" name="player1" style="width: 70%;" /> <input type="text" placeholder="Role" name="role1" style="width: 26%;" /><br />
<input type="text" placeholder="Player 2" name="player2" style="width: 70%;" /> <input type="text" placeholder="Role" name="role2" style="width: 26%;" /><br />
<input type="text" placeholder="Player 3" name="player3" style="width: 70%;" /> <input type="text" placeholder="Role" name="role3" style="width: 26%;" /><br />
<input type="text" placeholder="Player 4" name="player4" style="width: 70%;" /> <input type="text" placeholder="Role" name="role4" style="width: 26%;" /><br />
<input type="text" placeholder="Player 5" name="player5" style="width: 70%;" /> <input type="text" placeholder="Role" name="role5" style="width: 26%;" /><br />
<textarea name="info" placeholder="Additonal information" style="width: 98%;"></textarea><br />
<input type="submit" name="submit" style="width: 98%;" />
</form>
';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "=================\n";
$inhoud_mail .= "Verzonden via " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "=================\n\n";
$inhoud_mail .= "Teamnaam: " . htmlspecialchars($_POST['teamnaam']) . "\n";
$inhoud_mail .= "Teamtag: " . htmlspecialchars($_POST['teamtag']) . "\n";
$inhoud_mail .= "Email: " . htmlspecialchars($_POST['email']) . "\n";
$inhoud_mail .= "Player 1 (Teamcaptain): " . htmlspecialchars($_POST['player1']) . " Role: " . htmlspecialchars($_POST['role1']) . "\n";
$inhoud_mail .= "Player 2: " . htmlspecialchars($_POST['player2']) . " Role: " . htmlspecialchars($_POST['role2']) . "\n";
$inhoud_mail .= "Player 3: " . htmlspecialchars($_POST['player3']) . " Role: " . htmlspecialchars($_POST['role3']) . "\n";
$inhoud_mail .= "Player 4: " . htmlspecialchars($_POST['player4']) . " Role: " . htmlspecialchars($_POST['role4']) . "\n";
$inhoud_mail .= "Player 5: " . htmlspecialchars($_POST['player5']) . " Role: " . htmlspecialchars($_POST['role5']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['info']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['player1']) . ' <' . htmlspecialchars($_POST['email']) . '>';
$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'] = htmlspecialchars($_POST['teamtag']) . " aanmelding bftt";
if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
output('Het contactformulier is verzonden<br/><br/>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.');
}
else
{
output('Het contactformulier is niet verzonden');
}
}
?>
- Aar -:
Mailadres verwijderd om indexering door spam-bots te voorkomen.
Gewijzigd op 22/01/2014 23:38:07 door - Ariën -
Ik zie $_SESSION en geen session_start().
Louis Deconinck op 22/01/2014 16:42:44:
Ik heb een contactofrm geschreven maar om de één of andere reden werkt het:
Oke en nu moeten we het beoordelen?
Wat is de bedoeling van regel 10 t/m 21? Kun je dat niet makkelijker/beter opnemen in de code vanaf regel 23?
Je hebt nu in ieder geval 2x een controle of het formulier verzonden is. Lijkt me wat inefficient.
Voor spambots is het altijd handig als je een mailadres laat staan in je code ;-)