Welkom op de vernieuwde website van AlphamegaHosting.com!

Een veiliger formulier en gratis een goed doel steunen?

Patrick Dankers | 2009-06-24 | Beveiliging

In een voorgaand artikel heeft Ellen uitgelegd wat een captcha is en wat het nut daarvan is. Ze gaf ook een paar voorbeelden van websites waar je terecht kunt als je een captcha op je site wilt. Eén daarvan was Recaptcha. (Officieel wordt het geschreven als reCAPTCHA, maar omdat dat nogal schreeuwerig overkomt als het veel voorkomt in een tekst, schrijf ik in dit artikel alleen de eerste letter met een hoofdletter.)

In dit artikel wil ik dieper ingaan op deze captcha, omdat:

  • hij gratis is;
  • ik hem zelf ook gebruik;
  • een goed doel hiervan profiteert.

Voordat ik verderga, wil ik even melden dat je enige kennis van PHP nodig hebt om Recaptcha op je website te zetten.

Hoe werkt Recaptcha?

Recaptcha is ontwikkeld om een win-winsituatie te creëren. Je beschermt je website ermee tegen ongewenste bezoekers (met name spambots) én je helpt mee aan een gigantisch project om circa 100 miljoen oude boeken, tijdschriften en kranten te digitaliseren. Het project is gestart door het Internet Archive.

Dat gaat als volgt in zijn werk: er worden twee vervormde woorden getoond, van één woord is bekend hoe het geschreven moet worden en het andere woord is een scan die afkomstig is uit zo'n oud boek. Die scan kan niet ontcijferd worden door OCR-software. Daarom moeten mensen dat doen.

De bezoeker vult de woorden in die hij ziet. De captcha-software herkent of het eerste woord correct is geschreven. Zo ja, dan krijgt de bezoeker toegang tot de pagina die hij heeft opgevraagd én het antwoord op de scan wordt opgeslagen. Dezelfde scan wordt aan een aantal andere bezoekers getoond en aan de hand van de resultaten kan het systeem bepalen wat de correcte weergave is van de scan.

De universiteit hoopt hierdoor zoveel mogelijk traditionele captcha's te kunnen vervangen door Recaptcha's om zodoende de inspanningen van het publiek nuttig te kunnen aanwenden.

Want er wordt door de onderzoekers geschat dat dagelijks ruim zestig miljoen captcha's worden opgelost, waarmee 150.000 manuren eigenlijk worden weggegooid.

Recaptcha moet een deel van deze verloren arbeid nuttig gaan maken door het OCR-proces een handje te helpen.

Naast dit alles heeft Recaptcha ook een audio-captcha ingebouwd voor mensen die niet uit de woorden kunnen komen of slechtziend zijn. Met een simpele klik verander je de captcha in een audio-captcha.

Het voordeel van Recaptcha

Zoals te zien is op http://recaptcha.net/resources.html zijn er al voor een heleboel pakketten direct plugins beschikbaar waaronder een aantal bekende forumpakketten en CMS'en zoals Joomla en Typo3.

Recaptcha helpt jou jezelf te beschermen tegen spam, en jij helpt vervolgens mee om boeken te digitaliseren; in mijn ogen een echte win-winsituatie!

Installatie van Recaptcha

Het toevoegen van Recaptcha heb ik zelf op PHP-basis gedaan. Je voegt hem als 'class' toe en dan kun je hem overal waar je wilt, aanroepen.

Ga naar http://code.google.com/p/recaptcha/downloads/list?q=label:phplib-Latest en download de laatste release van reCaptcha.

Als je het zip-bestand hebt uitgepakt zie je de bestanden. Recaptchalib.php is het kernbestand en dat zul je ook moeten importeren in je code.

De overige PHP-bestanden zijn voorbeelden van hoe je de captcha kunt gebruiken.

Het enige wat je hoeft te doen is de recaptchalib.php te importeren in je code en in principe ben je dan al klaar.

Recaptcha gebruiken

Om te kijken hoe je Recaptcha gebruikt in je code, kun je het beste gewoon het bijgeleverde voorbeeld bekijken en analyseren.

Hier volgt de code:

<html>

<body>

<form action="" method="post">

<?php

 

require_once('recaptchalib.php');

 

// Get a key from http://recaptcha.net/api/getkey

$publickey = "";

$privatekey = "";

 

# the response from reCAPTCHA

$resp = null;

# the error code from reCAPTCHA, if any

$error = null;

 

# was there a reCAPTCHA response?

if (isset($_POST["recaptcha_response_field"])) {

$resp = recaptcha_check_answer ($privatekey,

$_SERVER["REMOTE_ADDR"],

$_POST["recaptcha_challenge_field"],

$_POST["recaptcha_response_field"]);

 

if ($resp->is_valid) {

echo "You got it!";

} else {

# set the error code so that we can display it

$error = $resp->error;

}

}

echo recaptcha_get_html($publickey, $error);

?>

<br/>

<input type="submit" value="submit" />

</form>

</body>

 

</html>

 

* Klik hier voor meer uitleg over hoe je deze code op je website kunt plaatsen.

We zullen samen de code analyseren:

<?php

require_once('recaptchalib.php');

In dit stuk wordt de API-controller geladen, waardoor je kunt communiceren met de API-server. Deze ene regel is essentieel.

// Get a key from http://recaptcha.net/api/getkey

$publickey = "";

$privatekey = "";

# the response from reCAPTCHA

$resp = null;

# the error code from reCAPTCHA, if any

$error = null;

Zoals je ziet moet je in dit stuk code de public en private key van die ene pagina invullen. Da zou ik dan ook zeer zeker doen.

Ga naar de pagina, kopieer de public en private key en plak deze keys in de PHP-code van hierboven.

Tevens worden de variabelen $resp en $error gedefinieerd in de bovenstaande code zodat ze later gebruikt kunnen worden.

if ($_POST["recaptcha_response_field"]) {

$resp = recaptcha_check_answer ($privatekey,

$_SERVER["REMOTE_ADDR"],

$_POST["recaptcha_challenge_field"],

$_POST["recaptcha_response_field"]);

if ($resp->is_valid) {

echo "You got it!";

} else {

# set the error code so that we can display it

$error = $resp->error;

}

}

 

Hier wordt gekeken of er een request wordt gedaan aan Recaptcha.

Als dat het geval is, gaat Recaptcha kijken naar het antwoord van de API-server.

Daarbij zijn een aantal parameters nodig, namelijk je private key, het IP-adres van de bezoeker (logging) en HTML-velden.

Vervolgens kun je met behulp van $resp->is_valid kijken of de captcha goed is ingevuld. Als dat niet het geval is, geeft Recaptcha een error en kun je daar je eigen error handling in zetten.

Overigens zul je de inputvelden recaptcha_response_field en recaptcha_challenge_field niet terugvinden in de HTML van het voorbeeld. Dit komt doordat die velden meekomen met de volgende regel:

echo recaptcha_get_html($publickey, $errr);

Deze functie geeft de HTML terug die nodig is om de captcha weer te geven. Daarbij is echter je public key nodig, zodat je je kunt identificeren bij Recaptcha. De HTML-response bevat alle velden en bevat een standaard opmaak.

Zo gebruik je dus Recaptcha in je code. Doordat Recaptcha niet zo groot is, is het makkelijker te gebruiken en komt er ook minder kopieer- en plakwerk aan te pas.

Tot zover mijn verhaal over Recaptcha.

Heel veel succes ermee!

O ja, als je een SwiftySite hebt, krijgen jouw bezoekers bij het invullen van een contactformulier en een gastenboek automatisch een captcha te zien.

Zoek

Doe mee! Word ook WebsiteSupporter!

Ontvang gratis elke week een verbetersuggestie voor je website, inclusief speciaal stappenplan om je site succesvol te maken.

Klik hier om je in te schrijven!

Domeinnaam-check

Domeinnamen v.a. € 1,- p/m. Check of jouw ideale domeinnaam nog vrij is:

www.

Even onthouden

Moet er iets aan je site gebeuren?

En heb je zelf geen tijd, geen zin of geen idee hoe je het moet aanpakken? Laat ons website-klusteam het voor je oplossen!

Klik hier voor meer info. 

Thema van de week:

Hallo Google! Welkom op mijn website!

De scripts van Google die regelmatig langskomen om je site te indexeren zijn natuurlijk ook 'bezoekers' die je het naar de zin moet maken. In het artikel van deze week leer je hoe je die 'crawlers' de juiste info kunt meegeven.

Klik hier voor het artikel.

Informatie

Hopelijk vind je alle informatie die je nodig hebt op deze website. Heb je nog vragen? Klik hier om een bericht te sturen of bel tijdens kantoor-uren met 040-2085353 (NL) of 011/547498 (B).

Ben jij een startende ondernemer?

Dan hebben wij een handig gratis ebook om je op weg te helpen met je online presentatie.

Klik hier om het gratis te downloaden.

Alphamega Hosting heeft een unieke garantie!
Privacy Contact Sitemap Copyright 2012 Alphamega Hosting B.V.