Foros del Web » Programando para Internet » PHP »

Problema con cookies (skinnable site)

Estas en el tema de Problema con cookies (skinnable site) en el foro de PHP en Foros del Web. Hola! Tengo un sitio que es skinnable (se le puede cambiar el skin, layout, diseño, theme..) pero el servidor donde la hospedo ha bloqueado algunas ...
  #1 (permalink)  
Antiguo 17/07/2007, 16:42
 
Fecha de Ingreso: septiembre-2003
Ubicación: Mendoza, Argentina
Mensajes: 54
Antigüedad: 20 años, 7 meses
Puntos: 0
Problema con cookies (skinnable site)

Hola!

Tengo un sitio que es skinnable (se le puede cambiar el skin, layout, diseño, theme..) pero el servidor donde la hospedo ha bloqueado algunas funciones por cuestiones de seguridad, no estoy muy enterado pero creo que dijeron que habían bloqueado las variales globales.

Si bien el cambio se produce sin problemas al cliquear las opciones, luego al cambiar la página se vuelve al skin default... les dejo el código a ver si tienen idea...

Código PHP:
$total_skins 14;
$default_skin 1;

  if (isset(
$_REQUEST['newskin'])) {
    
$newskin=(int)$_REQUEST['newskin'];
    if ( (
$newskin<1) OR ($newskin>$total_skins) ) $newskin=$default_skin;
  } elseif (isset(
$_REQUEST['skin'])) {
    
$newskin=(int)$skin;
    if ( (
$skin<1) OR ($skin>$total_skins) ) $newskin=$default_skin;
  } else 
$newskin=$default_skin;

  
$skin=$newskin;
  
setcookie('skin'""time() - 3600);
  
setcookie('skin',$newskin,time()+(86400*365),'/');
  
setcookie('skin',$newskin,time()+(86400*365),'/','.snootysims.com'); 

www.snootysims.com
__________________
www.capsulastudio.com
  #2 (permalink)  
Antiguo 17/07/2007, 23:16
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: Problema con cookies (skinnable site)

Bueno.. las cookies se están creando bien. Pero al estar deshabilitado el register_globals (de manera acertada por parte de tu host), no estás leyendo el contenido de dichas cookies directamente en la variable $skin. Debes utilizar $_COOKIE['skin'].
  #3 (permalink)  
Antiguo 17/07/2007, 23:43
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Re: Problema con cookies (skinnable site)

Algo más:
- La cookie debería re-escribirse solamente si el usuario cambia de skin. Sinembargo tu la re-escribes siempre. En otras palabras, si solamente cambia de página o hace click en la misma skin que ya está seleccionada, no hay por qué escribir cookies nuevas.

Te propongo algo como lo siguiente:
Código PHP:
$total_skins 14;
$default_skin 1;

$new_skin = ( isset( $_REQUEST['newskin'] ) )?(int)$_REQUEST['newskin']:0;
$cookie_skin = ( isset( $_COOKIE['skin'] ) )?(int)$_COOKIE['skin']:0;

if ( 
$new_skin && $new_skin <= $total_skins && $new_skin != $cookie_skin ){
    
// Quiere decir que se eligió un nuevo skin. Entonces guardamos la nueva selección
    
setcookie('skin'""time() - 3600);
    
setcookie('skin'$new_skintime()+(86400*365), '/');
    
setcookie('skin'$new_skintime()+(86400*365), '/','.snootysims.com');
    
$skin $new_skin;    
} elseif ( 
$cookie_skin && $cookie_skin <= $total_skins ) {
    
// Si hay cookie válida, tomamos ese valor.
    
$skin $cookie_skin;
} else {
    
// Si no hay nueva skin ni cookie válidas tomamos $default_skin.
    
$skin $defalutl_skin;
}

// A partir de aquí, tenemos la variable $skin con el que se debe mostrar. 
Un abrazo,
  #4 (permalink)  
Antiguo 18/07/2007, 12:45
 
Fecha de Ingreso: septiembre-2003
Ubicación: Mendoza, Argentina
Mensajes: 54
Antigüedad: 20 años, 7 meses
Puntos: 0
Re: Problema con cookies (skinnable site)

Buenas jpinedo!!!

Muchísimas gracias por la respuesta, no sólo rápida pero también bien detallada!!! Se aprecia que exista este tipo de personas!!!

En cuanto pueda actualizar los archivos del hosting, cualquier problema, me vuelvo a pasar, aunque seguramente se solucione!

Saludos,
Luis
__________________
www.capsulastudio.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:11.