Welkom op DutchJoomla!

Joomla! is één van de meest krachtige en veelgebruikte Open Source CMSen. Joomla! is eenvoudig te installeren, simpel te beheren en betrouwbaar.

Deze site is de Nederlandstalige portal van Joomla.

 

Recente forumposts

 

Joomla!

De naam Joomla is een fonetische spelling van het Swahiliaanse woord "jumla" dat staat voor "allen tezamen" of "als een geheel". Het is gekozen om de commitment van het development team en de community weer te geven.

Voorpagina Documentatie Tips en Trucs

Captcha toevoegen aan formulieren PDF Afdrukken E-mail
Geschreven door Eric Tiggeler   
donderdag, 07 mei 2009 22:10

Reactieformulieren beveiligen tegen spam!

Als je in je site een onbeveiligd reactieformulier opneemt, kun je erop wachten: spam! Zo'n formulier is gemakkelijk te misbruiken: een spambot vult de velden in met allemaal ongevraagde bagger en voor je het weet heb je een mailbox vol ‘informatieaanvragen' over vl@Gr@ en online casino's. Om te voorkomen dat zo'n spammer je formulieren automatisch invult, kun je een captcha-afbeelding opnemen. Alleen wie de afgebeelde code juist overtikt, kan het formulier verzenden. Hoe voeg je zo'n captcha-code toe aan een standaard-formulier in Joomla 1.5?

Wat is captcha?

Hieronder zie je hoe captcha werkt: aan een standaardformulier in Joomla wordt een invulvak toegevoegd.

Daarin moet de bezoeker vier tekens overtikken vanaf een afbeelding (die spambots niet kunnen lezen, maar mensen wel).

 

captchavoorbeeld

 

Als de bezoeker geen code invult, wordt het formulier niet verstuurd. Als hij de code fout overneemt, krijgt hij een melding:

 

foutmelding

 

Hoe voeg je de captchafunctie toe?

Standaard beschikt Joomla 1.5 niet over captcha-functionaliteit. Je moet er dus een extensie voor installeren. Eentje die goed werkt met de standaardformulieren van Joomla is TinCaptcha. Installeren vereist wel een aantal stappen: je moet een plugin en een component installeren, en je moet op in de code van het Joomlaformulier twee wijzigingen aanbrengen. Vrij veel gedoe dus, maar je bent wel in tien minuten van alle formulierspam af, én je kunt je bestaande formulieren gewoon blijven gebruiken.

Bij TinCaptcha kun je een redelijk uitgebreide Engelse uitleg downloaden, ook over aanpassingen die bijvoorbeeld nodig zijn als je TinCaptcha geschikt wilt maken voor VirtueMart. Dit zijn de stappen om TinCaptcha toe te voegen aan Joomla's contactformulier:

TinCaptcha downloaden en installeren

Je hebt deze bestanden nodig:

o   plg_tincaptcha_0.1.1.zip (de plugin)

o   com_tincaptcha_0.1.1.zip (de component)

  • Ga naar Extensions > Install/Uninstall en installeer de plugin.
  • Ga naar Extensions > Plugin Manager en activeer de plugin: klik op System - TinCaptcha en klik op Enabled: Yes. Klik Save.
  • Ga naar Extensions > Install/Uninstall en installeer de component. Met de component hoef je verder niets te doen. Hij verschijnt ook niet onder Components in de backend van je site.

Code aanpassen

Breng nu in de code van Joomla's contactformulier op twee plaatsen een wijziging aan. Dat doe je door het php-bestand dat je wilt aanpassen te downloaden met je ftp-programma, het bestand aan te passen (met bijvoorbeeld WordPad) en het tot weer te uploaden naar de oorspronkelijke locatie.

  1. Ga met je ftp-programma naar het bestand components/com_contact/controller.php. Download het en open het in een editor (bijv. Notepad). Zoek deze code:

function submit()
{
global $mainframe;

// Check for request forgeries
JRequest::checkToken() or jexit( 'Invalid Token' );

  1. Voeg in de volgende regel (dus meteen na de bovenstaande code) de volgende code toe:

// tincaptcha-
$captchk = plgSystemTincaptcha::check(JRequest::getVar('captcha', '', 'post'));
if ($captchk !== true)
{
JError::raiseWarning(0, $captchk);
return false;
}
// -tincaptcha

  1. Ga met je ftp-programma naar het bestand components/com_contact/views/contact/tmpl/default_form.php.
    Download dit bestand en open het in een editor (bijv. Notepad). Zoek deze code:

<label id="contact_textmsg" for="contact_text">
&nbsp;<?php echo JText::_( 'Enter your message' );?>:
</label>
<br />
<textarea cols="50" rows="10" name="text" id="contact_text" class="inputbox required"></textarea>

  1. Voeg in de volgende regel (dus meteen na de bovenstaande code) de volgende code toe:

<!-- tincaptcha- -->
<br />
<label for="captcha">
&nbsp;<?php echo JText::_( 'TIN_CAPTCHA' );?>:
</label>
<br />
<input type="text" name="captcha" id="captcha" size="10" class="inputbox required" value="" />
<br />
<img name="captchaimg" src="/index.php?option=com_tincaptcha&task=captcha_display" alt="<?php echo JText::_( 'TIN_CAPTCHA' );?>" />
<a href="javascript:void(0);" onclick="document.images['captchaimg'].src='index.php?option=com_tincaptcha&task=captcha_display&t='+(new Date()).getTime();return false;"><?php echo JText::_('TIN_REFRESH');?></a>
<!-- -tincaptcha -->


Tot slot:

Ga met je FTP-programma naar /templates/jouw_template/ in deze map creëer je een nieuwe map met de naam: html/com_contact/tmpl/
Nu upload je in deze map het aangepaste default_form.php Hierdoor zorg je ervoor dat je met het updaten van je Joomla! installatie het bestand blijft behouden zonder dat het overschreven wordt.
Houd er rekening mee dat indien er in een update van Joomla! een aanpassing is gemaakt in het bestand default_form.php dat het aanpassen van dit bestand ook nodig is in de versie die je zelf aangepast hebt.

 

De aanpassing die je uitgevoerd hebt in stap 1 en 2, moet je na elke Joomla! update controleren aangezien hier niet de bovenstaande mogelijkheid voor kan worden gebruikt.
Hierdoor loop je de kans dat, wanneer er een aanpassing gedaan in controller.php, dat deze met de update overschreven wordt.

 

Eric Tiggeler (www.joomla.erictiggeler.nl)

 

Laatst aangepast op donderdag, 24 december 2009 11:16
 
(advertentie)


Steun DutchJoomla

Geen enkel Open Source pakket kan zonder zijn community, dus wij kunnen ook niet zonder jou! Je kunt ons op vele verschillende manieren eenvoudig steunen en zo iets terug doen voor de community. Benieuwd hoe? Klik dan hier.

Adverteren op DutchJoomla

Je eigen bedrijf en/of diensten promoten op DutchJoomla? Dat kan met het voordelige DutchJoomla Advertentieprogramma. Profiteer van het aanbod en de vele bezoekers van DutchJoomla om jezelf te promoten! Klik hier voor meer info.
Copyright © 2004 - 2010 DutchJoomla! Alle rechten voorbehouden. Disclaimer
Joomla! is een geregistreerd merk van Open Source Matters, Inc.