anti spam functie in script toevoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bram Bruys

Bram Bruys

01/07/2012 09:01:08
Quote Anchor link
Hallo,

Ik ben volledig nieuw op het gebied van PHP en wil graag een anti-spam functie aan een bestaand script toevoegen.

Het script waar het om gaat is: bizmail (seth knorr) en dit functioneert zoals gewenst. Nu wil ik echter een functie toevoegen zoals hier beschreven:

Quote:
Part 1: The Contact Form

We are going to make a standard contact form with one extra feature: an input named “url” and a note beside it that says “Don’t type anything here!”

The HTML:
1 <form method="post" action="/submit.php">
2 <p>Your name:
3 <br /><input name="name" /></p>
4
5 <p>Your email:
6 <br /><input name="email" /></p>
7
8 <p class="antispam">Leave this empty:
9 <br /><input name="url" /></p>
10
11 <textarea name="message"></textarea>
12
13 <input type="submit" value="Send" />
14 </form>

Then we use CSS to hide the input and the note.

The CSS:
1 .antispam { display:none;}

Then we make a rule in the server that says ‘if the user typed anything in the “url” box, then throw it out.’

The PHP:
1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
2    
3
    // if the url field is empty
4    if(isset($_POST['url']) && $_POST['url'] == ''){
5    
6
        // then send the form to your email
7        mail( '[email protected]', 'Contact Form', print_r($_POST,true) );
8    }
9    
10
    // otherwise, let the spammer think that they got their message through
11    
12
    ?>

13
14 <h1>Thanks</h1>
15 <p>We'll get back to you as soon as possible</p>

A regular person won’t even see the box normally, and will therefore leave it blank without even thinking about it. If the CSS fails to load, they get a note explaining what to do.

However, when a spam bot looks at this, it sees a good spot to stick whatever spammy url they’re trying to advertise.

Now the php script on the server can tell who is a spammer and who isn’t. The regular people get sent to your email, the spammers get ignored!


Het lijkt mij dat een formulier geen verschillende php scripts aankan. Dus ik moet het in 'quotes' genoemde deel in het originele script zelf integreren.

Hoe kan ik dit het beste doen? (Als dit al mogelijk is)

Dank jullie voor de hulp.
Bram
 
PHP hulp

PHP hulp

26/12/2024 06:32:08
 
Wouter De Schuyter

Wouter De Schuyter

01/07/2012 09:30:07
Quote Anchor link
Je moet kijken welk formulier verzonden wordt, geef je submit button een name attribuut en kijk of die geset is om te detecteren welk formulier verzonden werd.

BV
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
27
28
29
30
31
<html>
<head>
<title>vb multiple forms</title>
</head>
</head>
<body>
<?php
    if($_SERVER['REQUEST_METHOD'] == "POST") {
        if(isset($_POST['form1'])) {
            echo '<h1>Formulier 1 verzonden!</h1>';
        }

        elseif(isset($_POST['form2'])) {
            echo '<h1>Formulier 2 verzonden!</h1>';
        }

        elseif(isset($_POST['form3'])) {
            echo '<h1>Formulier 3 verzonden!</h1>';
        }
    }

?>


<form action="" method="post">
<input type="submit" name="form1" value="Verzend formulier!" />
</form>
<form action="" method="post">
<input type="submit" name="form2" value="Verzend formulier!" />
</form>
<form action="" method="post">
<input type="submit" name="form3" value="Verzend formulier!" />
</form>
</body>
</html>
 
Eddy E

Eddy E

01/07/2012 09:53:21
Quote Anchor link
Je moet gewoon in hetzelfde formulier als wat je nu gebruikt een extra veld maken die leeg moet blijven.
Tip: noem het niet anti-spam of iets anders met 'spam' want spambotjes kijken daar echt wel naar.
Noem het het liefst iets als "email"... maar verberg dat veld met CSS/Javascript. Met uitleg erbij dat ze het NIET moeten invullen.

Gebruikers zien het veld niet, maar het is er wel.
Als ze het invullen, zijn ze spambot, en dus houd je ze tegen.
Het formulier wat je geeft is enkel voorbeeld.
 
Bram Bruys

Bram Bruys

01/07/2012 18:22:06
Quote Anchor link
Beste Wouter en Eddy,

Dank jullie voor de reactie en uitleg. Ja hier gaat het om het voorbeeld form. Ik kan het adres van het formulier via PM sturen (en ook het script)

Het invoegen van een extra veld met CSS (ja 'anti-spam' als class is nogal opzichtig), maar dan houdt het voor mij ook even op.

Welk javascript hoort hier bij OF kan ik het stukje php code (welke alleen om dit deel gaat) zomaar invoegen in een script?

Graag nog een zetje in de goede richting.

Bram
 
Obelix Idefix

Obelix Idefix

01/07/2012 18:40:08
Quote Anchor link
Bram Bruys op 01/07/2012 18:22:06:
Welk javascript hoort hier bij OF kan ik het stukje php code (welke alleen om dit deel gaat) zomaar invoegen in een script?

Proberen?! ;-)

Kwestie van je (boeren)verstand gebruiken (en eventueel Google translate). Het script wat je hierboven laat zien, geeft in het commentaar al aan wat er gebeurt.

Waar het in het voorbeeldformulier om gaat is
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<p class="antispam">Leave this empty:
<br /><input name="url" /></p>

Dit, met css gedeelte, zul je moeten opnemen in jouw formulier.

Met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if(isset($_POST['url']) && $_POST['url'] == '')

controleer je of het veld 'url' daadwerkelijk leeg is. Zo ja; (vermoedelijk) een echte bezoeker. Zo nee, (vermoedelijk) een spambot. In jouw voorbeeldcode komt geen javascript voor; hoe je er bij komt om dat dan eventueel te gaan gebruiken?
 
B Polak

B Polak

01/07/2012 20:00:52
Quote Anchor link
Veelal wordt in Message de daadwerkelijk spam gepost.

Je wilt eigenlijk niet hebben dat je een formulier hebt waarin staat:

"Hier niets invullen: URL: " met vervolgens een invulveld.

Hoe anders?
Beter laat je mensen wel de URL gewoon bij <input name=url> invullen.

En filter je uit op Message waarbij je neerzet: "(geen URL in textbox)".


En dan een filter:

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

$check_message
= str_replace("http", "", $_POST['message']);

   if ($check_message != $_POST['message']) {
  
       // plaats hier de actie wanneer het SPAM lijkt te zijn    
   }
 
?>
 
Obelix Idefix

Obelix Idefix

01/07/2012 20:19:00
Quote Anchor link
B Polak op 01/07/2012 20:00:52:
Je wilt eigenlijk niet hebben dat je een formulier hebt waarin staat:

"Hier niets invullen: URL: " met vervolgens een invulveld.

Begrijp opmerking niet: door de css wordt het veld toch niet aan een bezoeker getoond.
 
B Polak

B Polak

01/07/2012 20:45:34
Quote Anchor link
Obelix en Idefix op 01/07/2012 20:19:00:
B Polak op 01/07/2012 20:00:52:
Je wilt eigenlijk niet hebben dat je een formulier hebt waarin staat:

"Hier niets invullen: URL: " met vervolgens een invulveld.

Begrijp opmerking niet: door de css wordt het veld toch niet aan een bezoeker getoond.


True. Excuses moi, ik zag de Display: none; niet. Ik lees globaal bij veel tekst.

Het lijkt mij overigens wel een veronderstelling dat alle SPAM-bots de niet optische veldboxen gebruiken. Maar dat lijkt mij meer een logische gedachtengang i.p.v. dat ik het zeker weet.
 



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.