anti spam functie in script toevoegen
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
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!
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)
1
2
3
4
5
6
7
8
9
10
11
12
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 ?>
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
BV
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
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>
<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>
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.
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
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
Dit, met css gedeelte, zul je moeten opnemen in jouw formulier.
Met
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?
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)
1
2
3
4
5
6
7
8
9
10
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
}
?>
$check_message = str_replace("http", "", $_POST['message']);
if ($check_message != $_POST['message']) {
// plaats hier de actie wanneer het SPAM lijkt te zijn
}
?>
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.
"Hier niets invullen: URL: " met vervolgens een invulveld.
Begrijp opmerking niet: door de css wordt het veld toch niet aan een bezoeker getoond.
Obelix en Idefix op 01/07/2012 20:19:00:
Begrijp opmerking niet: door de css wordt het veld toch niet aan een bezoeker getoond.
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.
"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.