In 4 stappen automatisch inzendingen verifieren in Drupal webforms

02 Nov 2015

Joris Snoek - Business Dev
+31 (0)20 - 261 14 99

English translation here

Stel, je wilt een formulier op je website waarmee bezoekers jouw Cloud applicatie kunnen testen. Wij wilden dit graag voor mensen die ons Drupal social intranet OpenLucius gratis willen proberen. Daarvoor hebben we minimaal volgende gegevens nodig: e-mail adres, naam en organisatie.

We wilden graag:

  1. De drempel zo laag mogelijk houden.
  2. Het ingevulde e-mail adres verifiëren.
  3. Aanvullende gegevens vragen.
  4. Spambots tegengaan.

Ook wilden we het liefst zoveel mogelijk automatiseren, zodat wij niet onze tijd kwijt zijn aan spambots en niet-serieuze mensen.

In Drupal kan dit alles zonder een regel te hoeven coderen: met behulp van de populaire Drupal Webform en Token, hier is hoe in 4 stappen:

1. Houdt de drempel zo laag mogelijk

Ik ga ervan uit dat je enigszins bekend bent met de Webform module, zo niet: check dit. Maak een formulier aan waarin slechts één veld opgenomen: e-mail adres. Ik noem dit formulier het ‘Lead formulier’.

Frontend voorbeeld:

Backend:

2. Verifieer het e-mail adres

Configureer het webform dusdanig dat hij een ‘verificatie e-mail’ verstuurd naar het ingevoerd e-mail adres. In deze verificatie e-mail is een link opgenomen die een gebruiker moet aanklikken; op deze manier weet je dat het e-mail adres echt bestaat en dat het waarschijnlijk geen spambot is die het Lead formulier heeft ingevuld.

Het versturen van een verificatie e-mail naar het ingevoerd e-mail adres is mogelijk in de Drupal webform module. Dit kan je als volgt doen:

klik op de tab ‘E-mails’ betreffende Lead formulier:

Kies daar voor ‘Component value’ en klik ‘Add’. Configureer vervolgens deze e-mail. Binnen deze context is van belang dat de verificatie link erin opgenomen wordt, dit kan je onderin doen bij ‘E-mail template’:

Je ziet dat ik hier een link heb aangemaakt naar een pagina op de website en daarbij een extra argument meegeef ‘?email=[submission:values:e_mail]’. Als je dit nog mooi opmaakt met HTML dan kan hij er bijvoorbeeld zo uitzien:

Het opmaken van een mooi e-mail template kan je doen met behulp van bijvoorbeeld Mailchimp.

Wanneer mensen klikken op die verificatie link dan komen ze (in ons voorbeeld) uit op betreffende pagina in jouw website et voila: e-mail geverifieerd. Nu hebben we alleen nog aanvullende gegevens nodig (naam en organisatie):

3. Aanvullende gegevens vragen

Nadat er geklikt is op de verificatie link verschijnt het volgende webformulier welke alias ‘/verificatie’ heeft. Hier vraag je aanvullende gegevens die noodzakelijk zijn om betreffende proefperiode aan te maken. Ons voorbeeld:

Dit is dus ook een webform, opgemaakt uit 3 velden.

Backend:

Je ziet drie velden waarvan ‘Naam’ en ‘Organisatie’ standaard Textfields zijn. Je ziet dat ‘E-mail’ een default value heeft: dit is het eerder ingevoerde e-mail adres die via de verificatie link is meegenomen (middels het extra argument wat is meegegeven in de verificatie link ‘?email=[submission:values:e_mail]’). Webform kent een nifty functie die dit URL argument opvangt om te gebruiken als default value. Hoe? Klik op ‘edit’ achter het ‘E-mail’ veld en voer dit token in:

Ook zie je dat het E-mail veld disabled is in het frontend, zodat mensen niet opeens een ander e-mail adres kunnen gaan invoeren. Dit kan je ook in het backend instellen:

Done

Als mensen nu dat profiel invullen heb je alle gegevens compleet en kan je een shell -of PHP script in gang zetten die automatisch de omgeving aanmaakt en inloggegevens e-mailt.

4. Spambots tegengaan

De kans dat spambots hierdoor heen komen is al redelijk klein: er een handmatige menselijke actie nodig is: het aanklikken van de verificatie-link in de e-mail. Maar om de kans op spam (voornamelijk in het initiële formulier) kleiner te maken is het verstandig om bijvoorbeeld de Honeypot module te installeren. Zo maak je de kans kleiner dat je hele database vol gespamd wordt. Zie ook: Waarom je een honingpot op je website moet hebben

Toegift: HTML e-mails sturen vanuit een webform

Ter info: om HTML e-mails te kunnen versturen heb je de volgende modules nodig: Mailsystem en MimeMail. Na installeren hiervan is het aan te raden ‘include site style sheets’ uit te zetten. Anders is de kans er groot dat de verificatie e-mail in de spambox belandt:

Wrap up

Ok, that’s it, vragen of feedback? Let me know!

Comments

Nóg meer
kennis nodig?

Check ons ons blog archief >