Home
Navigation
Impressum
SEO Welten - Webcoding, Editoren, Scripte und Anwendungen
SEO Welten
Buchempfehlungen
 

Referrer aus HTML-Seiten einlesen und abspeichern

Codeschnipsel und PHP-Hilfsdatei

Ein kleines Script für einen Counter zu schreiben ist gut und schön, doch wer möchte nicht weitere Angaben erhalten? Zum Beispiel dürfte es viele Webmaster sehr interessieren, von welchen Suchmaschinen die Besucher auf seine Webseiten kamen und nach welchen Begriffen und Wortkombinationen sie dabei suchten. Um derartige Angaben zu erhalten ist es unerlässlich, die Referrer und deren QueryString einzulesen, abzuspeichern und auszuwerten. Die Abspeicherung kann dabei, je nach Größe des Webprojektes und der Anzahl der auszuwertenden Daten, in eine TXT-Datei oder in eine Datenbank erfolgen. Dazu reicht es bei PHP-Seiten aus, in allen Seiten einen Codeschnipsel wie nachfolgenden einzufügen. Alternativ könnte dieser Codeschnipsel zentral abgelegt und in allen Seiten included werden.

<?php

$deinreferrer = $_SERVER["HTTP_REFERER"];
    
$speichere = fopen ("counter.txt", "a") or die (Eine Fehlermeldung!);
fputs($speichere, $deinreferrer);
fclose($speichere); 

?>

So weit, so gut, doch fertigen Webmaster nicht nur PHP Seiten und so tummeln sich bei vielen Webprojekten  PHP-Seiten und HTML-Seiten friedlich nebeneinander. Würde hier der Webmaster oder der Programmierer wieder den auf der letzten Seite bereits vorgestellten JavaScript Codeschnipsel verwenden, könnte es zu einer unangenehmen Überraschung kommen. Abgespeichert würde zwar ein Referrer, nicht aber der Referrer des Besuchers, sonder der von der aufgerufenen Seite. Warum das so ist, ist gar nicht so schwer zu verstehen und soll kurz erläutert werden.

Zuerst die Frage, was ist eigentlich ein Referrer? Ein Referrer ist vom Prinzip her lediglich die Webadresse einer Webseite, von der ein Besucher über einen Hyperlink die eigene Webseite aufruft. Bei einer PHP Seite, in der obiger Codeschnipsel included wird, wird die Seite mit Codeschnipsel vom Server geparst und zusammen als eine Seite an dem Browser des Besuchers ausgeliefert und übergeben. Nicht aber wenn diese Hilfsdatei per JavaScript erst im Browser des Clienten bzw. des Benutzers von einer HTML Seite dazugeladen wird. In diesem Fall ist es die Webadresse der aufgerufene HTML-Seite, welche abgespeichert wird, da diese Webseite ihrerseits ja erst die kleine Hilfsdatei zum abspeichern aufruft.

Um dennoch an den eigentlichen Referrer zu gelangen, diesen einzulesen, abzuspeichern und auszuwerten, gibt es verschiedene Möglichkeiten. Wer sich den folgenden Codeschnipsel einmal etwas näher betrachtet, der wird erkennen, dass er den JavaScript Codeschnipsel von der letzten Seite gleicht, mit einer Ausnahme. Dieses kleine woher= hinter dem Fragezeichen wird zu einer Variablen, die den kompletten Referrer enthält und kann so abgespeichert werden, insofern der Referrer vom Browser des Clienten nicht geblockt wird.

<script language="JavaScript"><!--

document.write("<img src=\".../counter.php?woher="+escape(document.referrer)+"\" 
width=\"1\" height=\"1\" border=\"0\">");

//-- ></script>

Die kleine Hilfsdatei zum Abspeichern würde in diesem Fall wie folgt aussehen:

<?php

    $einlesen = fopen ("counter.txt", "a") or die (Eine Fehlermeldung!);
    fputs($einlesen, $woher);
    fclose($einlesen);
?>

Allerdings, soviel sei an dieser Stelle angemerkt, nicht alle Hoster stellen alle Funktionen aus Sicherheitsgründen und anderen Aspekten zur Verfügung und was bei dem einem Hoster möglich ist, braucht es bei einem anderen noch lange nicht zu sein. So verhält es sich auch mit dieser einfachen Variante zur Abspeicherung von Referrern, die bei einigen Hostern versagte. Wer sein Script bei unterschiedlichen Hostern oder auf unterschiedlichen Servern einsetzen möchte, sollte lieber gleich einer anderen Variante den Vorzug geben, die eigentlich beinahe bei allen Hostern die Referrer sicher einlesen und abspeichern müsste. Und zwar in dem Sie mit Hilfe der vordefinierten bzw. superglobalen Variable $_Server den QueryString einlesen. Weiterhin sollte noch etwas Wert auf Sicherheit gelegt und die Eingangswerte gefiltert werden. Die kleine Hilfsdatei zum Abspeichern der Referrer könnte dann in etwa wie folgt aussehen.

<?php
    
if (isset($_SERVER["QUERY_STRING"]) and !empty($_SERVER["QUERY_STRING"])){

$einreferrer = $_SERVER["QUERY_STRING"];
$einreferrer = preg_replace("/[^a-zA-ZäöüÄÖÜß0-9.,:;!?&()\/+_-]/"," ",$einreferrer);
$einreferrer = htmlspecialchars($einreferrer, ENT_QUOTES);
$einreferrer = preg_replace("/&amp;/","&",$einreferrer);
}
else {$einreferrer = "No Referrer";}

$speichern = fopen("counter.txt", "a") or die (Eine Fehlermeldung!);
fputs($speichern, $einreferrer);
fclose($speichern);

?>

Im Zweifelsfall sollten Sie mit phpinfo() im Vorfeld testen, welche PHP Servervariablen Ihnen bei Ihren Webprojekten zur Verfügung stehen. Zwar geht oftmals Probieren über Studieren, doch eine kleine Abfrage im Voraus mit phpinfo kann zumindest nicht schaden.

PHP Counter einbinden « zurück / als Demo » Testcounter

 
Navigation

Finden und
gefunden werden ...


- Optimierung -


Zukunftsaussichten

 

Webcoding

Übersicht


Web Services


Tutorials &
diverse Listings

und vieles mehr...

 


Copyright © 2006 - Verlag Horst Müller - Stendal | Datenschutz | Nutzungsbedingungen