Anti-Flood Form
Het is waarschijnlijk al veel vaker gevraagd maar doordat ik het niet echt goed weet te omschrijven in korte pakkende woorden heb ik het niet kunnen vinden op deze site.
Alvast bedankt =)
EDIT:
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
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
<?php
if ( $_POST['voornaam'] || $_POST['achternaam'] || $_POST['email'] || $_POST['bericht'] == "" )
{
echo ("U moet alle gegevens correct invullen. Probeer het nog eens. <a href=\"javascript:history.back(-1)\">Terug</a>");
exit();
}
ob_start();
$Anti_Spam=="10";
$to = "[email protected]";
$subject = "Een bericht via de site van de bezoeker: ".$_POST['voornaam']. " " .$_POST['achternaam'];
$body = "Dit is zijn email adres: ".$_POST['email']. "\nEn dit was zijn bericht:\n" .$_POST['bericht'];
if (mail($to, $subject, $body)) {
echo("<p>Uw bericht is verzonden. Wij zullen zo snel mogelijk reageren.</p>");
} else {
echo("<p>Er is iets fout gegaan met het verzenden van uw bericht. Probeer het later nog eens</p>");
exit();
}
setcookie("mailformulier",1,time()+($Anti_Spam*60)
?>
if ( $_POST['voornaam'] || $_POST['achternaam'] || $_POST['email'] || $_POST['bericht'] == "" )
{
echo ("U moet alle gegevens correct invullen. Probeer het nog eens. <a href=\"javascript:history.back(-1)\">Terug</a>");
exit();
}
ob_start();
$Anti_Spam=="10";
$to = "[email protected]";
$subject = "Een bericht via de site van de bezoeker: ".$_POST['voornaam']. " " .$_POST['achternaam'];
$body = "Dit is zijn email adres: ".$_POST['email']. "\nEn dit was zijn bericht:\n" .$_POST['bericht'];
if (mail($to, $subject, $body)) {
echo("<p>Uw bericht is verzonden. Wij zullen zo snel mogelijk reageren.</p>");
} else {
echo("<p>Er is iets fout gegaan met het verzenden van uw bericht. Probeer het later nog eens</p>");
exit();
}
setcookie("mailformulier",1,time()+($Anti_Spam*60)
?>
Gewijzigd op 01/01/1970 01:00:00 door Joshua
Mailen gaat niet werken, ik zie nergens headers, zie mail() op PHP.net voor meer info.
Mailen kan je beter laten doen door een appalicatie waarvan ik de naam ben vergeten.
Deze error krijg ik trouwens:
Parse error: syntax error, unexpected ';' in test/verzenden.php on line 24
Gewijzigd op 01/01/1970 01:00:00 door Joshua
Jurgen schreef op 27.01.2008 22:15:
Mailen gaat niet werken, ik zie nergens headers, zie mail() op PHP.net voor meer info.
headers meegeven is optioneel..
En het ligt eraan hoe graag je wilt dat ze niet binnen die bepaalde tijd nog een keer mailen. Coockies zijn simpel te verwijderen, als je een ip in db zet met wanneer hij/zij gemaild heeft en controleert of dat niet minder lang geleden is dan jij wilt dat dat is, word het al een stuk moeilijker..
stijn schreef op 27.01.2008 22:20:
headers meegeven is optioneel..
En het ligt eraan hoe graag je wilt dat ze niet binnen die bepaalde tijd nog een keer mailen. Coockies zijn simpel te verwijderen, als je een ip in db zet met wanneer hij/zij gemaild heeft en controleert of dat niet minder lang geleden is dan jij wilt dat dat is, word het al een stuk moeilijker..
Jurgen schreef op 27.01.2008 22:15:
Mailen gaat niet werken, ik zie nergens headers, zie mail() op PHP.net voor meer info.
headers meegeven is optioneel..
En het ligt eraan hoe graag je wilt dat ze niet binnen die bepaalde tijd nog een keer mailen. Coockies zijn simpel te verwijderen, als je een ip in db zet met wanneer hij/zij gemaild heeft en controleert of dat niet minder lang geleden is dan jij wilt dat dat is, word het al een stuk moeilijker..
Optioneel? Hoe moet jou mailserver nu weten waarmee hij te maken heeft als hij alleen maar een lap text krijgt. Die gaat wss regelrecht de prullenbak in of nog erger op een blacklist.
Je zou het IP adres van de verzender op kunnen slaan in een database samen met een DATETIME veld met daarin datum/tijdstip van verzenden. Waterdicht is het niet, maar het is een begin ;-)
found the solution.
/EDIT.
Ja idd Jan. Dat zal ik doen. Maar dan alleen wanneer ik inderdaad last heb van spam, anders is het de moeite niet echt waard.
Ik zit nu echter met een nieuw probleem. De code die ik heb blijft de hele tijd zeggen dat ik de gegevens niet volledig heb ingevuld, ook al heb je alle velden netjes ingevuld. Ziet iemand de fout?
Ik heb een code die gegevens uit een formulier verzend naar een email adres. Heel simpel allemaal. Nu heb ik een controle code geschreven, die eveneens super simpel is. Net deed hij het nog alleen blijft hij nu zeggen dat ik mijn gegevens moet invullen, ook al heb ik ze allemaal ingevuld. Hier is mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if ( $_POST['voornaam'] || $_POST['achternaam'] || $_POST['email'] || $_POST['bericht'] == "" )
{
echo ("U moet alle gegevens correct invullen. Probeer het nog eens. <a href=\"javascript:history.back(-1)\">Terug</a>");
exit();
}
$to = "[email protected]";
$subject = "Een bericht via de site van de bezoeker: ".$_POST['voornaam']. " " .$_POST['achternaam'];
$body = "Dit is zijn email adres: ".$_POST['email']. "\nEn dit was zijn bericht:\n" .$_POST['bericht'];
if (mail($to, $subject, $body)) {
echo("<p>Uw bericht is verzonden. Wij zullen zo snel mogelijk reageren.</p>");
} else {
echo("<p>Er is iets fout gegaan met het verzenden van uw bericht. Probeer het later nog eens</p>");
}
?>
if ( $_POST['voornaam'] || $_POST['achternaam'] || $_POST['email'] || $_POST['bericht'] == "" )
{
echo ("U moet alle gegevens correct invullen. Probeer het nog eens. <a href=\"javascript:history.back(-1)\">Terug</a>");
exit();
}
$to = "[email protected]";
$subject = "Een bericht via de site van de bezoeker: ".$_POST['voornaam']. " " .$_POST['achternaam'];
$body = "Dit is zijn email adres: ".$_POST['email']. "\nEn dit was zijn bericht:\n" .$_POST['bericht'];
if (mail($to, $subject, $body)) {
echo("<p>Uw bericht is verzonden. Wij zullen zo snel mogelijk reageren.</p>");
} else {
echo("<p>Er is iets fout gegaan met het verzenden van uw bericht. Probeer het later nog eens</p>");
}
?>
En hier is de code in werking:
http://test.joshuaboyd.nl/contact.html
Gewijzigd op 01/01/1970 01:00:00 door Joshua
Code (php)
1
2
3
4
2
3
4
<?php
if ( $_POST['voornaam'] || $_POST['achternaam'] || $_POST['email'] || $_POST['bericht'] == "" )
{
?>
if ( $_POST['voornaam'] || $_POST['achternaam'] || $_POST['email'] || $_POST['bericht'] == "" )
{
?>
is het probleem. Het zou zo moeten:
Code (php)
want krijg je geen notice's als ze niet bestaan??
of gooi ik nou $_GET en $_POST door elkaar?
Ik doe zelf meestal zoiets:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$required = array ('naam', 'adres', 'woonplaats');
$errors = array ();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
foreach ($required as $field) {
$field = trim ($_POST[field]);
if (empty ($field)) {
array_push ($errors, '<li>Niets ingevuld bij ' . $field . '</li>');
}
}
if (empty ($errors)) {
// okee
}
}
?>
$required = array ('naam', 'adres', 'woonplaats');
$errors = array ();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
foreach ($required as $field) {
$field = trim ($_POST[field]);
if (empty ($field)) {
array_push ($errors, '<li>Niets ingevuld bij ' . $field . '</li>');
}
}
if (empty ($errors)) {
// okee
}
}
?>