---
title: "Refererande sida"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/145652-refererande-sida"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "learn"
published: "2006-04-17T13:20:36.000Z"
updated: "2006-04-22T08:39:09.000Z"
replies: 10
views: 696
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/145652-refererande-sida"
---

# Refererande sida

## #1 — learn, 2006-04-17T13:20Z

Jag försöker lösa refererande-sida-problemet som många av oss säkerligen stött på. Variabeln $\_SERVER\['HTTP_REFERER'\] fungerar ju som bekant inte alltid.

Min idé bygger på att man **sist** på alla sidor lagrar aktuell sidas URL i en session, $\_SESSION\['referer'\]. Om man sedan behöver en bakåt-knapp ngnstans så är det bara att skriva \<a href="\<?=$\_SESSION\['referer'\]?\>"\>Bakåt\</a\>, eftersom det är föregående sida som senast sparats i sessionen. Det fungerar ju galant, tills ngn besökare får för sig att uppdatera sidan mha webbläsarens refresh-knapp, då ligger aktuell sidas URL i sessionen...

Någon som kan hjälpa mig med detta dilemma? Hur kan jag göra, jag är helt slut i skallen...

Alla tips på lösningar mottages med tacksamhet! :)

Permalänk: https://www.webforum.nu/p/145652

## #2 — hampus_b, 2006-04-17T13:39Z

borttagen - bättre lösning längre ner

Permalänk: https://www.webforum.nu/p/1801012

## #3 — learn, 2006-04-17T13:49Z

Hmm, nja. Hur menar du? Följande funkar inte:

```php
$thispage = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

if ($thispage != $_SESSION['lastpage']) {
  $_SESSION['beforelastpage'] = $_SESSION['lastpage'];
  $_SESSION['lastpage'] = $thispage;
} else {
$_SESSION['lastpage'] = $_SESSION['beforelastpage'];
} 

echo $_SESSION['lastpage'];
```

Var det så du menade?

Permalänk: https://www.webforum.nu/p/1801016

## #4 — learn, 2006-04-20T14:36Z

Där fick ni något att bita i... ;)

Hur löser jag detta på bästa sätt? Tips..!

Permalänk: https://www.webforum.nu/p/1802284

## #5 — hampus_b, 2006-04-20T20:50Z

lösning

så här, t.ex:

```php
 <?
session_start();

$thispage = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
 
if(!isset($_SESSION['ph'])) {
	$_SESSION['ph'][] = $thispage;
}
 
 if(isset($_SESSION['ph']) && $_SESSION['ph'][0] != $thispage) {
 	array_unshift($_SESSION['ph'],$thispage);
}

echo "SENASTE VISADE SIDAN:<br>";
echo "<strong>";
echo isset($_SESSION['ph'][1]) ? $_SESSION['ph'][1] : "finns ingen tidigare sida";
echo "</strong>";

echo "<h2>Hela historiken</h2>";
foreach ($_SESSION['ph'] as $k => $v) {
	echo "$k $v<br>";
}

?>
```

... exemplet håller hela historiken. testa scriptet genom att spara som test.php, kör sedan i webbläsaren och ändra bara adressen så här:

test.php?dummy=1
test.php?dummy=2
test.php?dummy=3 etc.

när du reloadar så visas fortfarande rätt. etc... enkelt :)

Permalänk: https://www.webforum.nu/p/1802382

## #6 — hampus_b, 2006-04-20T21:03Z

eller i kortform:

```php
<?
session_start();

$thispage = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

if(!isset($_SESSION['ph'])) { $_SESSION['ph'][] = $thispage; }

if(isset($_SESSION['ph']) && $_SESSION['ph'][0] != $thispage) {
    array_unshift($_SESSION['ph'],$thispage);
}

echo isset($_SESSION['ph'][1]) ? "<a href='" . $_SESSION['ph'][1] . "'>Förra sidan</a>" : false;

?>
```

Permalänk: https://www.webforum.nu/p/1802391

## #7 — hampus_b, 2006-04-20T21:08Z

konsekvensen av lösningen är förstås att "förra sidan" alltid pekar på förra sidan - inte att den stegar bakåt i tiden (klicka på länk 1 sen 2 sen 3 sen "bakåt" =\> 2, sen bakåt =\> 3...)

vill du att den ska fungera som en "riktig" bakåtknapp eller ska den bara gå till "förra" sidan... två lite olika saker :)

//hampus

Permalänk: https://www.webforum.nu/p/1802396

## #8 — learn, 2006-04-20T21:37Z

Gokväll,

Tack för din hjälp Hampus! 

> vill du att den ska fungera som en "riktig" bakåtknapp eller ska den bara gå till "förra" sidan...

Jag vill att man ska komma till den sida man var på innan.

Ska kika närmare på ditt förslag imorrn.

Godnatt :)

Permalänk: https://www.webforum.nu/p/1802408

## #9 — learn, 2006-04-21T11:49Z

Så nu har jag testat att leka lite med ditt script, och det funkar ju galant! Man tackar!  (y) 

Är detta ett vanligt sätt att göra på tror du? Ett problem finns ju dock, ifall användaren stängt av sessioner...

Permalänk: https://www.webforum.nu/p/1802566

## #10 — hampus_b, 2006-04-21T18:13Z

Det "vanliga" sättet att göra det är väl med javascript:
\<a href="javascript:back()"\>bakåt\</a\>

Användaren kan inte stänga av sessions (som sparas på servern) utan bara cookies (som sparas på klienten och - enkelt uttryckt - håller reda på vilken session id användaren har). PHP kan själv lösa detta genom att propagera session id via länkarna, så det är inget problem (fast det kan vara lite struligt). läs mer om det på <http://se.php.net/manual/en/ref.session.php>

Ska du använda scriptet bör du fundera på att rensa arrayn också så att den inte bara växer och växer...,typ:

```php
if (sizeof($_SESSION['ph']>10) { array_pop($_SESSION['ph']); }
```

... där 10 håller ordning på hur många klick bakåt php ska hålla i minnet...

Är du nöjd med lösningen, markera tråden som löst.

allt gott,

//hampus

Permalänk: https://www.webforum.nu/p/1802726

## #11 — learn, 2006-04-22T08:39Z

Javascript säger du, men det är ju enkelt att stänga av...

"Nöjd med lösningen...?"
\- Ja

Tackar!   :bire

Permalänk: https://www.webforum.nu/p/1802815

---

Tråden på webben: https://www.webforum.nu/amne/php/145652-refererande-sida
