Een tijdje terug lieten we jullie in een webtip al zien hoe je e-mailaddressen op je website kunt zetten zonder dat spam-bots dit kunnen lezen. Deze manier werkte met een plugin voor het javascript framework jQuery. Dit heeft als nadeel dat mensen die zonder javascript surfen het e-mailadres niet op de juiste manier kunnen zien. Vandaar dat we in de webtip van vandaag naar een tweede mogelijkheid kijken om een e-mailadres op een spamvrije manier weer te geven op je website. Dit gaan we doen met behulp van PHP en de GD library. Hiermee kunnen we plaatjes maken met PHP. Deze zijn moeilijker te lezen door bots en daarom plaatsen we het e-mailadres als plaatje op de website. Om het nog moeilijker te maken voor deze bots passen we ook de techniek van de vorige webtip toe.
Stap 1
Maak een bestand aan, bijv. email.php en plaats daar de volgende code in:
<?php
$string = $_GET['t'];
$string = str_replace('gj8', '@', $string);
$string = str_replace('hf4', '.', $string);
$font = 2;
$width = ImageFontWidth($font) * strlen($string);
$height = ImageFontHeight($font);
$im = imagecreate($width, $height);
// Witte achtergrond met zwarte tekst
$bg = imagecolorallocate($im, 255, 255, 255);
$textcolor = imagecolorallocate($im, 0, 0, 0);
// Maak het plaatje op positie top left
imagestring($im, $font, 0, 0, $string, $textcolor);
// Stel header in als PNG plaatje
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
Typ je nu in je browser: *JOUW PAD*/email.php?t=testgj8testhf4nl, dan zie je je e-mailadres als plaatje op de juiste manier terugkomen. Door middel van de PHP GD Library wordt er nu namelijk een plaatje gemaakt waarin tekst komt te staan. Deze tekst wordt eerst door een filter gehaald waarbij een willekeurige letterreeks (in ons geval 'gj8') wordt vervangen door '@' en een andere willekeurige letterreeks (in ons geval 'hf4') wordt vervangen door de punt. Uiteraard zijn deze letterreeksen ook door andere getallen, letters of tekens te vervangen, die keuze is aan jezelf.
Stap 2
Om je e-mailadres nu weer te geven op je website doe je dat hoe je ook normaal een plaatje toevoegt. De URL naar je plaatje wordt nu gewoon: *JOUW PAD*/email.php?t=testgj8testhf4nl . De browser denkt nu namelijk dat het php bestand een plaatje is doordat je in de headers in de vorige code hebt aangegeven dat het bestand een .png plaatje 'is'.
<img src="email.php?t=emailgj8adreshf4nl" />
Demo
Op onze contactpagina zie je dat een soortgelijke techniek is gebruikt.
