< Terug naar de hoofdpagina. | webspace Westerhaak, de scripts op de hoofdwebsite uitgelegd.

Het totaal aantal bezoekers van een andere website bijhouden.


Het aantal bezoekers van een website berekenen is niet zo moeilijk, maar hoe kun je bijhouden waar die vandaan komen? Dat doen we met een cookie, een aantal variabelen, een superglobal en het lezen en schrijven in een bestand. Het gebruik van een database en mysql is hierbij dus niet nodig.

Het bijhouden van de bezoekers die naar jouw website komen vanaf een andere website is op zich niet zo moeilijk, maar de code is nogal bewerkelijk. Een live-versie is te vinden op deze pagina.

We beginnen met een simpel stukje code, om te controleren of de gebruiker in de afgelopen tijd (in het voorbeeld een half uur) al eens vanaf die andere site is gekomen. We openen het script met "<?php", om de browser te laten weten dat het om PHP-code gaat. Het script zelf openen we met if en else, waarin we als eerste de cookie controleren:
<?php
    if (isset($_COOKIE['backtrap'])) {
Met bovenstaande code openen we het 'if en else statement', waarmee de controle gedaan zal worden. Als de cookie "backtrap" bestaat, gaan we niets doen. Want de bezoeker is al eens voorbij gekomen volgens de geplaatste cookie!

Omdat we ook nog moeten bekijken waar de bezoeker vandaan kwam, sluiten we eerst de 'if' af met een accolade ("}"). Daarna plaatsen we de else, waarmee de browser zal overschakelen naar de code die daarin is geschreven. Als de cookie bestaat, zal deze code niet uitgelezen worden!
    } else {
        $string = $_SERVER['HTTP_REFERER'];
Met bovenstaande code vragen we de voorgaande URL van de bezoeker op. Hiermee kunnen we deze uitlezen, en controleren of deze van de te controleren website is. Als we deze superglobal uitlezen, zal daar de volledige URL van de vorige pagina van de bezoeker uit komen. We stoppen deze uitkomst in een variabele "$string".

Tussendoortje:
Als je "echo ($_SERVER['HTTP_REFERER']);" in je PHP-code voegt, zul je zien dat daar de eerste pagina in je geschiedenis uit komt.

Nadat we de uitgelezen URL in de variabele "$string" hebben gestopt, kunnen we daar een stuk uit halen. Hetgene dat we niet nodig hebben, halen we er uit met substr, een onderdeel waarmee we onnodige informatie uit een variabele kunnen halen.
        $substr = substr($string,12,9);
Met dit stukje code halen we alle tekens weg, behalve de tekens vanaf teken 13, en 9 tekens erna. Dus de tekens 12 t/m 22 blijven behouden, en worden in een nieuwe variabele opgeslagen, hier is dat de variabele "$substr".

Vervolgens openen we weer een 'if en else statement', waarmee we gaan controleren of de bezoeker ook echt van de beoogde website is gekomen. We vergelijken de waarde in de variabele '$substr' met een vooraf ingestelde waarde, en openen daarna de uit te voeren code als het klopt:
        if ($substr == "google.nl") {
Als de variabele '$substr' de waarde "google.nl" heeft (tekens 12 t/m 22 van het webadres "https://www.google.nl/"), zal de code die in het statement staat, worden uitgevoerd.

We voeren deze code uit:
            $hit_count = @file_get_contents('vangoogle.txt');
            $hit_count++;
            @file_put_contents('vangoogle.txt', $hit_count);
Met de bovenstaande code kunnen we in een bestand een cijfertje optellen. Waar een 0 staat, zal nu een 1 geschreven worden. Staat er een 1, zal er een 2 komen te staan. Er gaat dus elke keer een stapje opgeteld worden. Dat slaan we op in het bestand van "vangoogle.txt", waarmee we dus een telbestand hebben.

Als laatste stellen we een cookie in voor een half uurtje, om zo te voorkomen dat als er meerdere keren vanaf google naar jouw website geklikt wordt, er meerdere tellingen ontstaan. Dat doen we met een cookie, die voor 1800 seconden geldig is (0.5 uur).
            setcookie("backtrap", "google count OK", time()+1800, "/");
We stellen een cookie in, met de naam 'vangoogle', een beschijving waarin staat dat de telling gelukt is en een "/" om de cookie op de gehele website geldig te laten zijn. Als laatste staat ern nog een timestamp in, waarmee de cookie 1800 seconden geldigheid meegegeven zal worden, een half uurtje.

Als laatste sluiten we de gehele code af met twee accolades, zodat de browser weet dat er geen andere code in dit stuk script geladen hoeft te worden.
        }
    }
?>
Het script is afgesloten met "?>", zodat de browser ook weet dat er geen PHP-code meer gaat komen in dit gedeelte van de pagina.