Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] Refresh forceren (https://forum.scholieren.com/showthread.php?t=1089984)

LB06 30-01-2005 22:26

[php]refresh forcen met php
 
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).

Triloxigen 30-01-2005 22:34

Haal de meta code uit s.com zelf.
(Deze krijg ja na het posten ;))

Ulfheðin 31-01-2005 08: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

Triloxigen 31-01-2005 08:45

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...

Manuzhai 31-01-2005 13:59

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.

Ulfheðin 31-01-2005 14:59

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.

Triloxigen 31-01-2005 15:10

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).

LB06 31-01-2005 22:26

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?

LB06 01-02-2005 00:34

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']; 



Alle tijden zijn GMT +1. Het is nu 23:58.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.