15 april, 2008

PHP: Spåra vilken sida man kommer från

Förord
Om ni programmerar i PHP så vet ni kanske att det går att spåra vilka sidor man kommer ifrån med hjälp av $_SERVER['HTTP_REFERER']. Det är ju bra men den aktiveras bara om en besökare klickar på en länk på en webbsida som sedan leder till er webbsida. Vissa problem kan uppstå om man vill spåra interna sidor. Nu ska jag försöka visa ett sätt man kan använda om man vill spåra vilken intern sida man kom ifrån, och det även om man manuellt skriver in en adress i adressfältet (t.ex www.example.com/admin/).

Introduktion
Här kommer en smidig lösning för att spåra vilken intern sida man kommer ifrån. Det kanske är så att man har ett administrationsskript som man endast får komma åt från en sida. Det finns många olika möjligheter.

Hur det fungerar
Vi väljer att spåra användaren med sessioner i PHP. Först sätter vi en konstant till ett specifikt värde (den aktuella adressen för sidan) om en session existerar, eller ett standardmeddelande om det är första sidan man besöker. Direkt efter kontroller sparar vi den aktuella sidan i sessionsvariabeln igen för att senare kunna kontrollera vilken sida man kommer ifrån på en annan sida. För att testa skriptet så skrivs även den föregående sidans adress ut på den aktuella sidan man besöker just för tillfället.

<?php
session_start();
// Spara föregående sida i en konstant
if (isset($_SESSION['referer'])) {
define('PREV_PAGE', $_SESSION['referer']);
}
else {
define('PREV_PAGE', 'ingen föregående sida. Detta är ditt första besök.');
}

// Spara ner den aktuella sidan för ett senare kontroll-tillfälle.
// Detta sparar även Querystringen om någon används.
$_SESSION['referer'] = $_SERVER['REQUEST_URI'];

/* Skriv ut adressen för föregående sida - Vilken sida man kom ifrån även om man skriver in adressen manuellt.
Fungerar dock inte med externa webbsidor. */
echo '<h1>Du kom från '. PREV_PAGE .'</h1>';
?>
Placera sedan koden på varje sida ni vill kontrollera.

Inga kommentarer:

Välkomna till bloggen

Välkomna ska ni vara kära besökare. Jag skriver om IT för att det är kul och för att jag vill dela med mig av information och kunskap. Jag försöker hålla bloggen så kategoriserad som möjligt för att ni enklare ska hitta intressanta länkar och artiklar.