Ik zal even globaal vertellen wat ik probeer te bereiken. Ik ben nu bezig met een script wat aan de hand van gegevens controleert of een bericht spam is, of juist niet. ik word behoorlijk geteisterd door spambots, dus ik wil het graag goed doen. nu gebeurt het volgende:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
#formulier is gezet..
echo "<br />\n<br />\n<h2>";
if(!checkemail($_POST['email'])) { #maakt verbinding met mx server en valideert het adres
echo logaction("U heeft geen geldig emailadres ingevoerd. Laat het veld leeg of gebruik een geldig emailadres.");
} else {
if(empty($_POST['naam']) || empty($_POST['message'])) {
echo logaction("U heeft geen geldige naam of een geldig bericht ingevoerd.");
} else {
if(!isset($_POST['showemail'])) {
$_POST['showemail'] = 0;
} else {
$_POST['showemail'] = 1;
}
if(page_exists($_POST['website'])) { #maakt verbinding met de website
$ipadr = trim($_SERVER['REMOTE_ADDR']);
if(strlen($ipadr) > 8) { #ip adres met >8 tekens = ok
if(empty($_POST['confirmemail'])) { #boobytrap voor spambots: gebruikers krijgen dit veld nooit te zien dankzei javascript
$sql = "
INSERT INTO
reacties
(nieuws_id, naam, email, bericht, showemail, website, datum, ip)
values
(
'".$_GET['id']."',
'".mysql_real_escape_string($_POST['naam'])."',
'".mysql_real_escape_string($_POST['email'])."',
'".mysql_real_escape_string($_POST['message'])."',
'".mysql_real_escape_string($_POST['showemail'])."',
'".mysql_real_escape_string($_POST['website'])."',
NOW(),
'".$_SERVER['REMOTE_ADDR']."'
)
";
$query2 = mysql_query($sql);
if($query2) {
echo "Het plaatsen is gelukt! U word teruggestuurd naar de vorige pagina.
<script type=\"text/javascript\">
window.location = \"/\"
</script>";
}
} else {
echo logaction("uit veiligheidsoverweging kan het bericht niet geplaatst worden. excuses voor het ongemak. code 1: Project Honeypot.");
}
} else {
echo logaction("uit veiligheidsoverweging kan het bericht niet geplaatst worden. excuses voor het ongemak. code 2: Geen toegang tot gegevens.");
}
} else {
echo logaction("De ingevoerde website bestaat niet.");
}
}
}
}
?>Logaction() is een functie die de gegevens in een database zet (ip, datum etc) en de tekst die hij als parameter meekrijgt weer returnd. een omslachtige echo() eigenlijk.
Nu mijn probleem: op het moment dat ik een bericht post komt mijn ip netjes in de database terecht, maar op het moment dat de spambots mijn website betreden en de boel onder spammen, gebeurt er niets (er wordt géén ip adres gepost). ook als er een fout emailadres, een niet bestaande website, niet ingevoerde velden etc worden opgestuurd, het wordt hoe dan ook gepost. bovendien blijft de log database leeg.
mijn vraag is nu, kan het zijn dat spambots geen Ip adres meesturen? of zie ik iets anders over het hoofd?
m.v.g.,
Jens.