Anti-Flood Form

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Joshua

Joshua

27/01/2008 22:12:00
Quote Anchor link
Ik heb een formulier dat moet worden ingevuld waarna er een mailtje wordt verstuurd. Ik heb al een controle op empty fields toegepast alleen zoek ik nu een manier om er voor te zorgen dat iemand niet binnen een ingestelde tijd meerdere formulieren kan versturen. Ik zat te denken richting cookies instellen voor een bepaalde tijd o.i.d.?

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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)

?>
Gewijzigd op 01/01/1970 01:00:00 door Joshua
 
PHP hulp

PHP hulp

25/12/2024 21:05:28
 
Jurgen assaasas

Jurgen assaasas

27/01/2008 22:15:00
Quote Anchor link
Mailen gaat niet werken, ik zie nergens headers, zie mail() op PHP.net voor meer info.
 
Aaa Trump

aaa Trump

27/01/2008 22:17:00
Quote Anchor link
Mailen kan je beter laten doen door een appalicatie waarvan ik de naam ben vergeten.
 
Joshua

Joshua

27/01/2008 22:18:00
Quote Anchor link
Het mailen werkt wel gewoon hoor, het is welliswaar geen mooi opgemaakt mailtje, maar dat wat ik wil van het mailtje is aanwezig. Alleen kan iemand me uitleggen hoe ik het kan aanpakken met die timer?

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
 
Stijn

stijn

27/01/2008 22:20:00
Quote Anchor link
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..
 
Jurgen assaasas

Jurgen assaasas

27/01/2008 22:25:00
Quote Anchor link
stijn schreef op 27.01.2008 22:20:
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.
 
Jan Koehoorn

Jan Koehoorn

27/01/2008 22:36:00
Quote Anchor link
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 ;-)
 
Joshua

Joshua

27/01/2008 22:39:00
Quote Anchor link
EDIT:
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)
PHP script in nieuw venster Selecteer het PHP script
1
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>");
}




?>


En hier is de code in werking:

http://test.joshuaboyd.nl/contact.html
Gewijzigd op 01/01/1970 01:00:00 door Joshua
 
Jan Koehoorn

Jan Koehoorn

27/01/2008 23:05:00
Quote Anchor link
Dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
    if ( $_POST['voornaam'] || $_POST['achternaam'] || $_POST['email'] || $_POST['bericht'] == "" )
{

?>

is het probleem. Het zou zo moeten:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    if ($_POST['voornaam'] == '' || $_POST['achternaam'] || ... enz
?>
 
Cake Masher

Cake Masher

27/01/2008 23:10:00
Quote Anchor link
kan het niet beter dit zijn?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php

   if (!empty ($_POST['voornaam']) && !empty ($_POST['achternaam']) && enz..)
{


?>


want krijg je geen notice's als ze niet bestaan??
of gooi ik nou $_GET en $_POST door elkaar?
 
Jan Koehoorn

Jan Koehoorn

27/01/2008 23:46:00
Quote Anchor link
@ Rick: nee, dan krijg je alleen een foutmelding als ze allemaal leeg zijn.

Ik doe zelf meestal zoiets:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
        }
    }

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.