Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/07/2011, 17:42
Avatar de Italico76
Italico76
 
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 7 meses
Puntos: 292
[APORTE] Uso de cache: como evitar cachear contenidos de usuarios logueados

Hola gente

Estube probando la implementacion de la cache...y alguna complicacion tecnica a pesar de ser una 'gran cosa'.

Un usuario logueado ve un panel de control...y el sitio tiene un diseño diferente incluso al del usuario no-logueado pero con el uso de la cache...... se muestra el panel a quien no debe y viceversa!

Una solucion posible URLs agregandoles #logued o ?logued al final para que la cache las vea diferentes pero eso implica:

1) En cada link, form, etc... agregar el #logued / ?logued si esta logueado
2) Re-dirigir si no tiene la marca y esta logueado porque puede venir de un buscador.

Algo mas facil ? aca MI solucion implementada con CodeIgniter:

MY_url_helper.php
Código PHP:
<?php
    
function anchor($uri ''$title ''$attributes '')
    {
        
$title = (string) $title;
        
        
/* agreado! */
        
if (is_logged()){
          
$uri .= '?logued';
        }

        if ( ! 
is_array($uri))
        {
            
$site_url = ( ! preg_match('!^\w+://! i'$uri)) ? site_url($uri) : $uri;
        }
        else
        {
            
$site_url site_url($uri);
        }

        if (
$title == '')
        {
            
$title $site_url;
        }

        if (
$attributes != '')
        {
            
$attributes _parse_attributes($attributes);
        }

        return 
'<a href="'.$site_url.'"'.$attributes.'>'.$title.'</a>';
    }

    function 
full_url($protocol='http') {
        
//$protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http'; 
      
return $protocol.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
      }
y en MY_Controller (clase que extiendo luego en vez de CI_Controller)

Código PHP:
class MY_Controller extends CI_Controller{

   function 
__construct(){    
    
parent::__construct();                  
  
      if (
is_logged()){               
        if (!
strstr(full_url(),'?logued')){    
          
redirect (current_url().'?logued');
        }
         }
   ...            
  }
..

Con eso funciona
__________________
Salu2!

Última edición por Italico76; 12/07/2011 a las 18:30