Sitemap
Weblog
In samen werking met PHPResource.nl
XHTML and CSS valid
All rights reserved
Copyright to devfolio
Ik ben een poos opzoek geweest naar een functionele antispam service zonder captcha. In dit artikel ga ik uitleggen hoe je dit precies doet, en hoe je het beste kan maken.
Benodigdheden
– Je hebt de laatste versie van MicroAkismet nodig – deze is hier te verkrijgen.
Instellen
Zodra je het pakketje hebt gedownload pak je hem uit in de gewenste directorie. Je kan hier een api key verkrijgen (ja je moet je aanmelden). Zodra je account is geactiveerd op de wordpress site kan je een api key aanvragen. Als je de api key hebt gekregen kan het script gebruikt worden, anders niet!
Zodra je eigen apikey hebt ontvangen is het tijd om verder te gaan met scripten. Je maakt een file aan waarin je de class include. Voorbeeld:
// Class inladen require_once ( 'class.microakismet.inc.php' ); // Clas aanroepen en instellen $akismet = new MicroAkismet( 'key', 'http://www.devfolio.net/', 'devfolio/0.1');
Nu je de class hebt ingevoegd in je bestaande php script kan je gaan testen of het werkt, haal simpelweg de apicode weg uit je configuratie bestand en kijk wat er gebeurt. Als het goed is krijg je dan de foutmelding: “No api key given”. Als je dit krijgt dan is alles goed ingesteld en voer je de api key weer in je configuratie bestand. Op de volgende pagina laat ik een aantal voorbeelden zien hoe je het kan implanteren in je bestaande script.
Voorbeeld in een bestaande class
class formulieren {
public function _post ( $content, $author, $email ) {
// geef de class toegang om in je functie te komen
global $akismet;
// $vars is onze dump voor de content
$vars = array();
// Voeg de contents van $_SERVER toe om akismet te helpen (niet weghalen).
foreach ( $_SERVER as $key => $val ) { $vars[ $key ] = $val; }
// Gebruiker gegevens - IP/browser
$vars['user_ip'] = $_SERVER["REMOTE_ADDR"];
$vars["user_agent"] = $_SERVER["HTTP_USER_AGENT"];
// Gebruiker gegevens - POST data
$vars["comment_content"] = $content;
$vars["comment_author"] = $author;
$vars["comment_author_email"] = $email;
// Je kan hier nog meer velden toepassen, maar we houden het simpel.
// Post informatie kijken of het spam is.
if ( $akismet->check ( $vars ) ) {
// Het is spam volgens akismet
mysql_query ( "INSERT INTO spam ( gIp, datum ) VALUES ( '".$vars['user_ip']."', '". date ('d/m/y') ."' )");
} else {
// Het is geen spam - toevoeg query
mysql_query ( "INSERT INTO comments ( gIp, cPoster, cEmail, cContent ) VALUES ( '". $vars['user_ip'] ."', '". $vars['comment_author'] ."', '". $vars['comment_author_email'] ."', '". $vars["comment_content"] ."' ) ");
}
}
}
Deze functie hanteert Wordpress ook, gegarandeerd 99% anti spam dus!
In de bovenstaande code staat dat we toch spam in de database zetten, we doen dit om in het administratie paneel te zien van wie het komt (zodat we de gebruiker kunnen blokkeren) en welke datum zodat we een mooi overzicht kunnen maken.
Typ fouten voorbehouden, dit artikel mag uitsluitend gekopieerd worden met mijn toestemming.
Het bericht is gemaakt op 31/05/2009 om 8:13 pm, door Youri.
Het is mogelijk om te reageren.