Oud 30-01-2005, 22:26
LB06
LB06 is offline
Hallo,

Ik heb mijn website themable gemaakt, waardoor via een form een voorgeïnstalleerd theme kan worden geselecteerd. Er wordt dan tevens een cookie geset, die onthoudt welke keuze je het laatst hebt gemaakt, zodat de visitor de door hem(m/v) gekozen look weer terug op het scherm krijgt na in geval van een later bezoek.

PHP-code:
if( isset($_GET['theme']) ) {
    
setcookie('theme'$_GET['theme'], time() + 60'/');
    
header("Location: ./");
}
else if( isset(
$_COOKIE['theme']) ) {
    
$theme $_COOKIE['theme'];
}
else {
    
$theme 'blue';

De variable $theme wordt dan weer gebruikt om verder wat CSS te parsen. Dit werkt allemaal leuk en aardig, ware het niet dat de redirect in IE de pagina niet opnieuw ophaalt, maar gewoon de oude pagina uit de cache haalt. In Firefox wordt de content wel meteen gerefreshed. Weet iemand hoe je de pagina kunt laten refreshen in IE na een redirect? (zonder dat dit elke keer gebeurt bij het bezoeken van de pagina).
Met citaat reageren
Advertentie
Oud 30-01-2005, 22:34
Verwijderd
Haal de meta code uit s.com zelf.
(Deze krijg ja na het posten )
Met citaat reageren
Oud 31-01-2005, 08:12
Verwijderd
voor een refresh gebruik ik altijd
PHP-code:

header
("Location: gsgsgs.php");
exit;
?> 
ik weet niet of dat met theme-doeleinden werkt, probeer het zou ik zeggen
Met citaat reageren
Oud 31-01-2005, 08:45
Verwijderd
Citaat:
Ulfheðin schreef op 31-01-2005 @ 09:12 :
voor een refresh gebruik ik altijd
PHP-code:

header
("Location: gsgsgs.php");
exit;
?> 
ik weet niet of dat met theme-doeleinden werkt, probeer het zou ik zeggen
Dat is doorsturen...
Met citaat reageren
Oud 31-01-2005, 13:59
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Kijk eens naar het anti-cache voorbeeld op deze pagina. Ik denk dat dat je probleem wel oplost. Wat er namelijk gebeurt is dat IE je pagina cachet (terwijl dat eigenlijk niet de bedoeling is) in de browser cache, dat kan je voorkomen door een paar headers mee te sturen met je HTTP response.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 31-01-2005, 14:59
Verwijderd
Citaat:
********** schreef op 31-01-2005 @ 09:45 :
Dat is doorsturen...
Niet als het om $_SERVER['SCRIPT_NAME'] (of de hardgecode naam van het bestand) gaat. Het is welliswaar geen refresh, het enigste wat verschilt is dat je scroll-locatie niet bewaard blijft.
Met citaat reageren
Oud 31-01-2005, 15:10
Verwijderd
Citaat:
Ulfheðin schreef op 31-01-2005 @ 15:59 :
Niet als het om $_SERVER['SCRIPT_NAME'] (of de hardgecode naam van het bestand) gaat. Het is welliswaar geen refresh, het enigste wat verschilt is dat je scroll-locatie niet bewaard blijft.
Dan is het nog steeds doorsturen, ok al is het naar zichzelf..
Dan blijft het doorsturen..


Er is trouwens ook een refresh header met PHP meen ik (maar die zet ook gewoon een html tag).
Met citaat reageren
Oud 31-01-2005, 22:26
LB06
LB06 is offline
Bedankt voor de reacties. Ik heb het nu zo gedaan:

PHP-code:
// Force Resresh
if($_GET['cache'] == 'no') {
    
header("Cache-Control: no-store, no-cache, must-revalidate");
    
header("Cache-Control: post-check=0, pre-check=0"false);
}

// Koekje?
if( isset($_GET['theme']) ) {
    
setcookie('theme'$_GET['theme'], time() + 60'/');
    
header("Location: http://" $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '?cache=no') ;
}
else if( isset(
$_COOKIE['theme']) ) {
    
$theme $_COOKIE['theme'];
}
else {
    
$theme 'blue';

Het enige nadeel is nu dat er na de refresh ?cache=no achter de url komt te staan. Is er een andere mogelijkheid een variabele 'over' een refresh heen mee te geven, behalve via de url?

Nog een vraagje: Nu worden zeker ook de images gerefreshed? Bestaat er een mogelijkheid deze uit te zonderen bij een refresh?

Laatst gewijzigd op 01-02-2005 om 00:35.
Met citaat reageren
Oud 01-02-2005, 00:34
LB06
LB06 is offline
Het is al opgelost:

PHP-code:
$expireTime 60*60;
...
session_set_cookie_params($expireTime);
session_start();
if( isset(
$_GET['theme']) ) {
    
$_SESSION['theme'] = $_GET['theme'];
}
else if( !isset(
$_SESSION['theme']) ) {
    
$_SESSION['theme'] = 'blue';
}

$theme $_SESSION['theme']; 
Met citaat reageren
Advertentie
Reageren

Topictools Zoek in deze topic
Zoek in deze topic:

Geavanceerd zoeken

Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 22:47.