Anti-Spam validatie nodig voor gastenboek
Ik heb een gastenboek script maar het probleem is dat ik er enorm veel spam op ontvang, nu zou ik dit willen oplossen door een anti-spam code ofzo, maar hoe moet ik dit dan aanpassen in mijn script? Hopelijk wil er iemand mij helpen? Reeds dank!
Quote:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>.: DJ Guniii - Gastenboek :.</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Page-Enter" content="blendTrans(Duration=1)">
<meta name="robots" content="all">
<meta name="distribution" content="Global">
<meta name="rating" content="General">
<meta name="copyright" content="Copyright © 2010 - T-Bounce.com">
<meta name="author" content="T-Bounce.com">
<meta name="language" content="en,nl">
<meta name="ressource-type" content="document">
<meta name="revisit-after" content="9 days">
<meta name="description" content="DJ Guniii">
<meta name="keywords" content="DJ Guniii Official Website">
<link rel="stylesheet" type="text/css" href="css/content.css" media="screen" />
<link rel="stylesheet" type="text/css" media="all" href="css/jScrollPane.css" />
<script type="text/javascript" src="scripts/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="scripts/jquery.mousewheel.js"></script>
<script type="text/javascript" src="scripts/jScrollPane.js"></script>
<!--script type="text/javascript" src="../dist/jScrollPane.min.js"></script-->
<script type="text/javascript">
$(function()
{
// this initialises the demo scollpanes on the page.
$('#pane1').jScrollPane();
$('#pane2').jScrollPane({showArrows:true});
$('#pane3, #pane4').jScrollPane({scrollbarWidth:20, scrollbarMargin:10});
// this allows you to click a link to add content to #pane4 and shows how to
// reinitialise the scrollbars when you have done this.
$('#add-content').bind(
'click',
function()
{
$('#pane4').append($('<p></p>').html($('#intro').html())).jScrollPane({scrollbarWidth:20, scrollbarMargin:10});
}
);
// and this allows you to click the link to reduce the amount of content in
// #pane4 and reinitialise the scrollbars.
$('#remove-content').bind(
'click',
function()
{
$('#pane4').empty().append($('<p></p>').html($('#intro').html())).jScrollPane({scrollbarWidth:20, scrollbarMargin:10});
}
);
});
</script>
</head>
<body>
<div id="pane1" class="scroll-pane">
<p><strong>DJ Guniii Gastenboek</strong><br />
<img src="images/contentline.png" alt="contentline" width="342" height="2" /></p>
<center>
<table width="340" border="0">
<form method="post" action="" name="gastenboek">
<tr>
<td><b><font color="#666666">Bericht toevoegen</font></b></td>
</tr>
<tr><td width="150"><div align="right">Naam:</div></td><td width="250"><input type="text" name="naam" size="40"></td></tr>
<tr><td width="150"><div align="right">Email:</div></td><td width="250"><input type="text" name="email" size="40"></td></tr>
<tr><td width="150"><div align="right">Homepage:</div></td><td width="250"><input type="text" name="homepage" size="40" value="http://"></td></tr>
<tr><td valign="top"><div align="right">Bericht:</div></td><td><textarea name="bericht" cols="40" rows="5"></textarea>
<br></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="verzenden"></td></tr>
</form>
</table>
<br><a href="admin.php">ADMIN</a>
</center>
</div>
</body>
</html>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<? ob_start();
include "connect.php";
include "ubb.php";
//antiflood
function flood(){
$time = 20;
if(!isset($_COOKIE["floodvh"])){
setcookie("floodvh",time()+$time,time()+$time, "/");
}
elseif($_COOKIE["floodvh"] >= time()){
exit("<table><tr><td><b>Je moet nog even wachten voor je je volgende bericht kunt plaatsen!</b><br><a href='javascript:window.history.go(-1)'>Klik hier om terug te keren</a></td></tr></table>");
}
}
?>
include "connect.php";
include "ubb.php";
//antiflood
function flood(){
$time = 20;
if(!isset($_COOKIE["floodvh"])){
setcookie("floodvh",time()+$time,time()+$time, "/");
}
elseif($_COOKIE["floodvh"] >= time()){
exit("<table><tr><td><b>Je moet nog even wachten voor je je volgende bericht kunt plaatsen!</b><br><a href='javascript:window.history.go(-1)'>Klik hier om terug te keren</a></td></tr></table>");
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>.: DJ Guniii - Gastenboek :.</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Page-Enter" content="blendTrans(Duration=1)">
<meta name="robots" content="all">
<meta name="distribution" content="Global">
<meta name="rating" content="General">
<meta name="copyright" content="Copyright © 2010 - T-Bounce.com">
<meta name="author" content="T-Bounce.com">
<meta name="language" content="en,nl">
<meta name="ressource-type" content="document">
<meta name="revisit-after" content="9 days">
<meta name="description" content="DJ Guniii">
<meta name="keywords" content="DJ Guniii Official Website">
<link rel="stylesheet" type="text/css" href="css/content.css" media="screen" />
<link rel="stylesheet" type="text/css" media="all" href="css/jScrollPane.css" />
<script type="text/javascript" src="scripts/jquery-1.2.6.min.js"></script>
<script type="text/javascript" src="scripts/jquery.mousewheel.js"></script>
<script type="text/javascript" src="scripts/jScrollPane.js"></script>
<!--script type="text/javascript" src="../dist/jScrollPane.min.js"></script-->
<script type="text/javascript">
$(function()
{
// this initialises the demo scollpanes on the page.
$('#pane1').jScrollPane();
$('#pane2').jScrollPane({showArrows:true});
$('#pane3, #pane4').jScrollPane({scrollbarWidth:20, scrollbarMargin:10});
// this allows you to click a link to add content to #pane4 and shows how to
// reinitialise the scrollbars when you have done this.
$('#add-content').bind(
'click',
function()
{
$('#pane4').append($('<p></p>').html($('#intro').html())).jScrollPane({scrollbarWidth:20, scrollbarMargin:10});
}
);
// and this allows you to click the link to reduce the amount of content in
// #pane4 and reinitialise the scrollbars.
$('#remove-content').bind(
'click',
function()
{
$('#pane4').empty().append($('<p></p>').html($('#intro').html())).jScrollPane({scrollbarWidth:20, scrollbarMargin:10});
}
);
});
</script>
</head>
<body>
<div id="pane1" class="scroll-pane">
<p><strong>DJ Guniii Gastenboek</strong><br />
<img src="images/contentline.png" alt="contentline" width="342" height="2" /></p>
<center>
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<? if ($_POST['submit']) {
if ($_POST['naam']!="" AND $_POST['bericht']!="" AND $_POST['email']!="") {
flood();
$insert = "INSERT INTO gastenboek (id,naam,email,homepage,bericht,datum, ip) VALUES ('','".$_POST[naam]."','".$_POST[email]."','".$_POST[homepage]."','".$_POST[bericht]."','".date('Y-m-d H:i:s')."','".$REMOTE_ADDR."')";
mysql_query($insert) or die(mysql_error());
echo "<script>location.href='$PHP_SELF'</script>"; }
else { echo"<table><tr><td><b>U bent vergeten iets in te vullen.</b><br><a href='javascript:window.history.go(-1)'>Klik hier om terug te keren</a></td></tr></table>";}}
else { ?>
if ($_POST['naam']!="" AND $_POST['bericht']!="" AND $_POST['email']!="") {
flood();
$insert = "INSERT INTO gastenboek (id,naam,email,homepage,bericht,datum, ip) VALUES ('','".$_POST[naam]."','".$_POST[email]."','".$_POST[homepage]."','".$_POST[bericht]."','".date('Y-m-d H:i:s')."','".$REMOTE_ADDR."')";
mysql_query($insert) or die(mysql_error());
echo "<script>location.href='$PHP_SELF'</script>"; }
else { echo"<table><tr><td><b>U bent vergeten iets in te vullen.</b><br><a href='javascript:window.history.go(-1)'>Klik hier om terug te keren</a></td></tr></table>";}}
else { ?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
$sql = "SELECT * FROM gastenboek ORDER BY datum DESC";
$resultaat = mysql_query($sql) or die ("query mislukt");
while ($rij = mysql_fetch_object($resultaat)){
$naam = htmlspecialchars($rij->naam);
$email = htmlspecialchars($rij->email);
$homepage = htmlspecialchars($rij->homepage);
$bericht = htmlspecialchars($rij->bericht);
set_smilies($bericht);
echo "<table><tr><td width=150 valign=top><a href=mailto:".$email."><b>".$naam."</b></a><br><font size=1>";
if ($homepage=="" OR $homepage=="http://") {} else {
echo "<a href=\"".$homepage."\" target=\"_blank\">website</a>"; }
echo"</font></td><td width=250 valign=top>".$bericht."</td></tr></table><br> ";} ?>
$sql = "SELECT * FROM gastenboek ORDER BY datum DESC";
$resultaat = mysql_query($sql) or die ("query mislukt");
while ($rij = mysql_fetch_object($resultaat)){
$naam = htmlspecialchars($rij->naam);
$email = htmlspecialchars($rij->email);
$homepage = htmlspecialchars($rij->homepage);
$bericht = htmlspecialchars($rij->bericht);
set_smilies($bericht);
echo "<table><tr><td width=150 valign=top><a href=mailto:".$email."><b>".$naam."</b></a><br><font size=1>";
if ($homepage=="" OR $homepage=="http://") {} else {
echo "<a href=\"".$homepage."\" target=\"_blank\">website</a>"; }
echo"</font></td><td width=250 valign=top>".$bericht."</td></tr></table><br> ";} ?>
<table width="340" border="0">
<form method="post" action="" name="gastenboek">
<tr>
<td><b><font color="#666666">Bericht toevoegen</font></b></td>
</tr>
<tr><td width="150"><div align="right">Naam:</div></td><td width="250"><input type="text" name="naam" size="40"></td></tr>
<tr><td width="150"><div align="right">Email:</div></td><td width="250"><input type="text" name="email" size="40"></td></tr>
<tr><td width="150"><div align="right">Homepage:</div></td><td width="250"><input type="text" name="homepage" size="40" value="http://"></td></tr>
<tr><td valign="top"><div align="right">Bericht:</div></td><td><textarea name="bericht" cols="40" rows="5"></textarea>
<br></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="verzenden"></td></tr>
</form>
</table>
<br><a href="admin.php">ADMIN</a>
</center>
</div>
</body>
</html>
Zet even je hele code tussen [.code.] [./code.] tags. zonder de puntjes.
Code (php)
1
2
3
2
3
<?php
$d = file_get_contents("http://www.ipinfodb.com/ip_query.php?ip=$ip&output=xml&timezone=false");
?>
$d = file_get_contents("http://www.ipinfodb.com/ip_query.php?ip=$ip&output=xml&timezone=false");
?>
meer info en examples op de genoemde website.
Gewijzigd op 04/08/2010 14:06:32 door John D
Niek s op 04/08/2010 14:56:12:
reCaptcha is een service waarvan je gebruik kan maken. Deze service kan offline zijn....
Verder vind ik reCaptcha nogal lelijk en te dominant. Ik heb hem wel even gebruikt als test en het werkt goed.
Gewijzigd op 04/08/2010 15:00:25 door John D
John D op 04/08/2010 14:59:14:
reCaptcha is een service waarvan je gebruik kan maken. Deze service kan offline zijn....
Verder vind ik reCaptcha nogal lelijk en te dominant. Ik heb hem wel even gebruikt als test en het werkt goed.
Niek s op 04/08/2010 14:56:12:
reCaptcha is een service waarvan je gebruik kan maken. Deze service kan offline zijn....
Verder vind ik reCaptcha nogal lelijk en te dominant. Ik heb hem wel even gebruikt als test en het werkt goed.
Je eigen webserver kan ook plat gaan. Alles kan.
Je kan reCaptcha gewoon stylen, dus dat is ook geen reden om het niet te gebruiken
Je kunt bijvoorbeeld de gebruiker een random rekensom opgeven. Ik doe dat dan emestal in letters. Bijvoorbeeld: Bereken: drie plus een ofzow, een som die iedereen kan oplossen (behalve de spambots)
bv van;
Cookie tijd 30Seconde
Als die tijd niet voorbij is komt erop; Geduld, je vorige reactie word nog verwerkt.
en als niet zo is laat je de Ingetypte text lade, ik ga hier geen code van geven.
Want ik will je alleen maar een voorstel geven ;)
je kan cookies omzeilen, lijkt me dus niet het meest ideale voorstel.
Persoonlijk maak ik van gebruik van een of meerdere hidden submit knoppen (of andere input velden) beide submit knoppen krijgen een random naam en ook de volgorde is random. De 'foute' submit knoppen worden hidden gemaakt door een met php gegenereerde css (bots controleren geen css bestanden)
Gebruikers klikken altijd de zichtbare, bots worden (tot nu toe) goed tegen gehouden,
Als iemand speciaal voor die website een bot wil maken, dan zal de dit niet goed genoeg zijn,
Handig is om zodra er een hidden submit verzonden word, het IP gebanned geblokt word, maar je kan dan ook een captcha weergeven voor het geval dat, bij wijze van 2e kans.
Captcha is bedoeld als last-resort, niet om zomaar rond te gooien zoals nu veel gebeurd.
Als ik voor een simpel berichtje een captcha moet invullen, of een simpele rekensom moet oplossen, dan klik ik weg. Misschien dat ik daarin uniek ben maar dat betwijfel ik.
Ga eerst maar naar andere anti-bot oplossingen zoeken, en gebruik captcha alleen als je al vermoed dat een gebruiker een bot is. (omdat hij een hidden input veld heeft ingevuld, of nooit een afbeelding / css / javascript van je website heeft geladen)
IP opslaan bij berichten is ook handig, komt er een bot door? Dan blok je hem.
Ook zijn er lijsten met IP adressen van bekende bots, die kan je ook raadplegen.