history.back() in IE?
Ik wil gebruiker de mogelijkheid bieden een pagina terug laten gaan en gebruik een knop met onclick = "history.back()"
In alle browsers werkt dat goed (soms mbv opnieuw verzenden) maar in IE8 en 7 geeft dat soms: " De webpagina is verlopen"
:-(
Weet iemand wat is er dan aan de hand is en hoe kan ik zorgen dat er gewoon netjes naar de vorig geladen pagina gegaan wordt?
grt I.
ps history.back(1) en history.go(-1) hebben hetzelfde probleem
Gewijzigd op 01/01/1970 01:00:00 door El Grimbo
En die de webpagina is verlopen is hetzelfde als de opnieuw verzenden vraag die je soms in andere browsers krijgt.
misschien proberen die POST waardes te vervangen door GET of misschien een sessie variable?
Want als iemand via google / bookmark / link via iemand anders op de pagina terecht is gekomen werkt de vorige link niet zoals verwacht wordt.
Rob schreef op 28.12.2009 13:58:
misschien proberen die POST waardes te vervangen door GET of misschien een sessie variable?
hmmm dit zou wel eens wat kunnen opleveren. Aan een sessie variabele had ik ook al gedacht inderdaad.
Waarvoor gebruiken?
gebruiker krijgt een vraag en kiest ja of nee en dan weer een vraag en dan ja of nee maar moet natuurlijk ook naar de vorige vraag kunnen that's why. Ik heb weer eens de kortste weg genomen maar misschien niet de beste.
edit: wat later...
Inderdaad ligt het aan het GET POST verschil. Met GET geen probleem.
grt i.
Gewijzigd op 01/01/1970 01:00:00 door El Grimbo
Pepijn schreef op 28.12.2009 14:11:
Nee, doe dat al helemaal niet.
http_referer wordt door de browser geset. Dat betekend dat je er niet op mag vertrouwen. Hij kan niet gezet zijn (krijg je het zelfde verhaal wat ik hierboven heb geplaatst) of juist onveilig zijn (als je door een verkeerde site wordt doorgestuurd).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$sDomain = strtolower(substr($_SERVER['SERVER_PROTOCOL'], 0, strpos($_SERVER['SERVER_PROTOCOL'], '/'))) . '://' . $_SERVER['HTTP_HOST'] . '/';
if(isset($_SERVER['HTTP_REFERER']) && (strcmp(substr($_SERVER['HTTP_REFERER'], 0, strlen($sDomain)), $sDomain) === 0))
{
$sBackUrl = $_SERVER['HTTP_REFERER'];
}
else
{
$sBackUrl = $sDomain;
}
?>
$sDomain = strtolower(substr($_SERVER['SERVER_PROTOCOL'], 0, strpos($_SERVER['SERVER_PROTOCOL'], '/'))) . '://' . $_SERVER['HTTP_HOST'] . '/';
if(isset($_SERVER['HTTP_REFERER']) && (strcmp(substr($_SERVER['HTTP_REFERER'], 0, strlen($sDomain)), $sDomain) === 0))
{
$sBackUrl = $_SERVER['HTTP_REFERER'];
}
else
{
$sBackUrl = $sDomain;
}
?>
Gebruik vervolgens $sBackUrl als 'terug link'.