Weblog over webdesign, SEO, CSS en meer
De HTTP referrer is een veelgebruikte en krachtige tool. Het geeft aan op welke website de link zich begeeft waarop de huidige bezoeker geklikt heeft om op jouw website uit te komen. Zowel website designers als zoekmachine specialisten kunnen flink profiteren van deze kennis. Deze locatie is bekend voor zowel een klik vanaf een externe website, als voor interne clicks binnen je eigen website. Maar hoe wordt dit gedaan? En wanneer moet je de HTTP referrer wel of niet inzetten?
![]()
Het ophalen van de variabele is eigenlijk een eenvoudige taak. Eerst dient er gecontroleerd te worden of de referrer gezet en niet leeg is (een lege of niet gezette variabele kan mogelijk veroorzaakt worden door foutieve server instellingen, of door bezoekers die voorkomen dat deze waarde wordt opgeslagen). Wanneer de variabele gezet is en niet leeg is, dan kan deze verwerkt worden. In dit voorbeeld zullen we de waarde van de variabele op het scherm weergeven, beveiligd door de functie htmlspecialchars.
if( isset($_SERVER['HTTP_REFERER']) AND trim($_SERVER['HTTP_REFERER']) != '' )
{
// Start processing the referer here
echo 'Referer: '. htmlspecialchars($_SERVER['HTTP_REFERER']);
}
Sommige mensen lijken te hebben bedacht: "gezien het mogelijk is om te zien van welke pagina's mijn bezoekers vandaan komen, kan ik dit gebruiken als een manier om bepaalde personen toegang te verschaffen tot mijn beveiligde website of afdeling". Ze geven dan toestemming op basis van het (vermoedelijke) domein waarvandaan bezoekers komen op basis van de referrer. Gezien het eenvoudig is om middels telnet of XmlHttpRequest de variabele $_SERVER['HTTP_REFERER'] aan te passen, zal dit een flink beveiligingslek opleveren. In het kort: gebruik $_SERVER['HTTP_REFERER'] nooit als veiligheidsmaatregel.
Wanneer je een partnership hebt met een andere website (laten we tweepixels.nl als voorbeeld nemen), dan zal jouw link waarschijnlijk op hun website staan. Soms kan het nuttig zijn om bezoekers te laten weten dat je verwant bent aan deze partner, of kun je een speciale korting geven aan bezoekers die komen van de partner website. Let er wel op dat dit beperkt blijft tot kleine stukjes website, Google stelt het namelijk niet op prijs wanneer er veel content op de website aanwezig is die niet kan worden ingelezen door de zoekspider. Content aanpassen aan de hand van de referrer kan als volgt gedaan worden:
if( isset($_SERVER['HTTP_REFERER']) AND trim($_SERVER['HTTP_REFERER']) != '' )
{
// Splits de referer in stukjes
$aUrlParts = parse_url($_SERVER['HTTP_REFERER']);
// Controleer of het host gedeelte de term 'tweepixels.nl' bevat
if( strpos($urlParts['host'], 'tweepixels.nl') !== false )
{
echo 'Speciale aanbieding voor bezoekers via tweepixels.nl!';
}
}
Wanneer een gebruiker bijvoorbeeld uitlogd op een website, dan willen zij niet teruggestuurd worden naar een witte pagina met de tekst 'Je bent succesvol uitgelogd'. Nee, zij willen op dezelfde pagina blijven als zij waren, maar alleen uitgelogd worden uit hun account. Let er hierbij wel op dat het zoals eerder genoemd mogelijk is om de $_SERVER['HTTP_REFERER'] te faken. Er kan daarom gedacht worden aan code die controleert of de $_SERVER['HTTP_REFERER'] een waarde bevat die binnen hetzelfde domein is als waar wij ons nu bevinden. Deze code valt echter niet binnen de grenzen van dit artikel en zal daarom niet verder worden uitgewerkt.
// Hier eerst de code om te gebruiker uit te loggen
if( isset($_SERVER['HTTP_REFERER']) AND trim($_SERVER['HTTP_REFERER']) != '' )
{
header('Location: '. $_SERVER['HTTP_REFERER']);
}
else
{
// Referer is niet gezet, stuur bezoekers daarom naar onze homepage
header('Location: http://www.tweepixels.nl/');
}
Wanneer je niet gebruik maakt van een statistieken pakket als Google Analytics kan het verstandig zijn om zelf de locatie op te slaan waarvandaan bezoekers jouw website bereikt hebben. Dit zorgt ervoor dat je bij kunt houden welke links en campagnes effectief zijn, en welke niet.