- Home
- Categorie
- Coding e Sistemistica
- PHP
- script php per cache, solo quando non si è loggati
-
script php per cache, solo quando non si è loggati
salve a tutti, ho un sito in php-mysql, volevo un pò velociazzarlo(anche se lo è già) tramite uno script di cache
ne ho trovato uno online e de il seguente :
header:
[PHP]<?php$url = $_SERVER["SCRIPT_NAME"];$break = Explode('/', $url);$file = $break[count($break) - 1];$cachefile = 'cached-'.substr_replace($file ,"",-4).'.html';$cachetime = 18000;if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) { echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n"; include($cachefile); exit;}ob_start(); ?>[/PHP]footer:
[PHP]
<?php// Cache the contents to a file
$cached = fopen($cachefile, 'w');fwrite($cached, ob_get_contents());fclose($cached);ob_end_flush(); // Send the output to the browser
?>[/PHP]il seguente script funziona bene, però ha un problema inserisce in cache anche elementi di quando si è loggati, mostrando quindi contenuti di chi è loggato a normali visitatori.
ora volevo far attivare questo script solo quando non si è loggati, nel mio sito la condizione per verificare se un utente è loggato o meno è questa:
[PHP] if($info["partner_registrato"] OR ($info["is_supremeadmin"] OR $info["is_admin_base"]))
[/PHP]ho provato quindi a creare una condizione tipo questa :
per la parte dell'header:
[PHP]<?
if($info["partner_registrato"] OR ($info["is_supremeadmin"] OR $info["is_admin_base"]))
{} else {
$url = $_SERVER["SCRIPT_NAME"];$break = Explode('/', $url);$file = $break[count($break) - 1];$cachefile = 'cached-'.substr_replace($file ,"",-4).'.html';$cachetime = 18000;if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) { echo "<!-- Cached copy, generated ".date('H:i', filemtime($cachefile))." -->\n"; include($cachefile); exit;}ob_start(); // Start the output buffer
}
?>[/PHP]per il footer stessa condizione ma con il secondo blocco di codice , putroppo facendo dei test non funziona , dove sta il problema ?