Foros del Web » Creando para Internet » Diseño web »

Como recordar la posicion en que lo deja un usuario

Estas en el tema de Como recordar la posicion en que lo deja un usuario en el foro de Diseño web en Foros del Web. Tengo una intranet en la que los usuarios se tienen que logear, y unas 4 o 5 capas que se pueden mostrar y ocultar al ...
  #1 (permalink)  
Antiguo 08/08/2006, 03:03
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 12 años, 7 meses
Puntos: 2
Como recordar la posicion en que lo deja un usuario

Tengo una intranet en la que los usuarios se tienen que logear, y unas 4 o 5 capas que se pueden mostrar y ocultar al gusto en una parte comun de la pagina (se ven en todas las paginas).

Me gustaria que me dijerais como podria hacer para que se recuerde en todo momento que capas ha dejado ocultas y cual mostradas el usuario, tanto para en el mismo momento de navegar en la pagina, como para la proxima vez que se loguee. Tendria que ser una "configuracion" para cada usuario diferente.

A mi se me ha ocurrido usar cookies, para no tener que consultar continuamente a la base de datos, pero es algo que nunca he hecho, y no se como se podria hacer, la verdad. Por eso os pido ayuda


De momento, para mostrar y ocultar, tengo una funcion en JavaScript, que es esta:

Código:
	
       <script language="JavaScript">
		function mo_lateral(obj){
			capa=obj.parentNode.nextSibling.nextSibling;
			if(capa.style.display=="none"){
				capa.style.display="block";
			}else{
				capa.style.display="none";
			}
		}
	</script>
Lo del parentNode y nextSibling es porque lo que se oculta es una capa que esta mas abajo, pero eso da igual.

La llamo simplemente la llamo con un onclick="mo_lateral(this);"
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #2 (permalink)  
Antiguo 08/08/2006, 04:54
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 12 años, 7 meses
Puntos: 2
Bueno, voy avanzando poco a poco. Estoy utilizando php y JavaScript, me he documentado mas sobre cookies en php, y ahora mismo lo que tengo hecho es la forma en la que recuperar los datos de una cookie.

El problema lo tengo porque no se como crear la cookie. He leido que en php esta la funcion setcookie, y que hay que usarla antes de escribir ninguna etiqueta, porque lo envia con el encabezado y tal. No se como preparar el codigo para que me almacene lo que hace el usuario, las capas que muestra y las capas que oculta. ¿Alguien me orienta un poco por favor? Gracias.

Para el valor de la cookie de cada usuario he pensado en una estructura tal que "nombre_capa:valor;nombre_capa2:valor;nombre_capa3 :valor;etc"



Pongo el codigo que he escrito para recuperar ese valor, y procesarlo.

He creado una nueva funcion set_mo_lateral para ponerle a una capa el valor directamente

Como aun no tengo cookie (porque no se me ocurre la manera correcta de crearla, jeje), uso directamente en un string unos datos de ejemplo, de capas ocultadas y visibles.

Código PHP:
    <script language="JavaScript">
        function mo_lateral(obj){
            capa=obj.parentNode.nextSibling.nextSibling;
            if(capa.style.display=="none"){
                capa.style.display="block";
            }else{
                capa.style.display="none";
            }
        }

        function set_mo_lateral(capa, dis){
            capa.style.display=dis;
        }
        
    </script>
    <?php
        
//setcookie ( USUARIO , VALOR , EXPIRAR);
        
$valor_cookie=$_COOKIE[$_SESSION['admin_nick']];
$valor_cookie="cajas_laterales:none;cajas_laterales2:block;cajas_laterales3:block";
        
//Captar cookie de usuario de posicion de capas
        
$posiciones=explode(";",$valor_cookie);
        for(
$i=0$i<sizeof($posiciones); $i++){
            
$dat=explode(":"$posiciones[$i]);
            echo 
"<script language=\"JavaScript\">";
            echo 
"set_mo_lateral(document.getElementById(\"".$dat[0]."\"), \"".$dat[1]."\");<br/>";
            echo 
"</script>";
        }
    
?>
A ver si me podeis ayudar, gracias!
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #3 (permalink)  
Antiguo 08/08/2006, 07:17
 
Fecha de Ingreso: junio-2004
Mensajes: 616
Antigüedad: 13 años, 6 meses
Puntos: 25
Sobre cookies...

Te pongo el código que yo uso para manejar cookies desde JavaScript.

Yo prefiero ponerlas y leerlas con el mismo lenguaje. Es decir, si las pongo con PHP, las leo con PHP, y si las pongo con JavaScript, las leo con JavaScript.

Código:
function getExpDate(days, hours, minutes) {
    var expDate = new Date( );
    if (typeof days == "number" && typeof hours == "number" && 
        typeof hours == "number") {
        expDate.setDate(expDate.getDate( ) + parseInt(days));
        expDate.setHours(expDate.getHours( ) + parseInt(hours));
        expDate.setMinutes(expDate.getMinutes( ) + parseInt(minutes));
        return expDate.toGMTString( );
    }
}

   
function getCookieVal(offset) {
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1) {
        endstr = document.cookie.length;
    }
    return unescape(document.cookie.substring(offset, endstr));
}
   

function getCookie(name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg) {
            return getCookieVal(j);
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break; 
    }
    return "";
}
   

function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape (value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}
   

function deleteCookie(name,path,domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}
Espero que te sirva de ayuda.

En cuanto al manejo de cookies en PHP mírate
http://www.php.net/manual/en/features.cookies.php

Un saludo de,
eContento
__________________
eContento
- Mis artículos, tutoriales y labs
- Mis jsfiddles
  #4 (permalink)  
Antiguo 08/08/2006, 08:07
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 12 años, 7 meses
Puntos: 2
Replanteo...

Voy a tener que replantear casi todo, por un error de concepto. No voy a poder utilizar cookies... por la sencilla razon de que las cookies se guardan en el ordenador "cliente", y los usuarios de la intraweb accederan desde cualquier parte...

No usare cookies como tal, pero si que voy a usar su metodología. Tengo pensado crear un archivo de texto en el servidor que sea el que guarde esos datos con una estructura concreta. De hecho todo lo que he planteado antes me sirve igual, lo unico que se cambia es la estructura del archivo, para poder poner el usuario: usu1>nombre_capa:valor;nombre_capa2:valor;nombre_c apa3 :valor;etc


Tengo dudas, no estoy seguro si en JavaScript se pueden leer y escribir archivos del servidor, aunque estoy casi convencido de que no, asi que tendre que manejar el archivo con php. De momento ya he escrito lo necesario para leerlo:

Código PHP:
                $manejador fopen("posiciones_usuarios.txt""r");
        while (!
feof($manejador)) {
            
$linea fgets($manejador);
            
$separado=explode(">",$linea);
            
$usuario=$_SESSION['admin_nick'];
            if (
$separado[0] == $usuario){
                
$posiciones_usuario=$separado[1];
            }
        }
        
fclose($manejador);

        
//Captar cookie de usuario de posicion de capas
        
$posiciones=explode(";"$posiciones_usuario);
        for(
$i=0$i<sizeof($posiciones); $i++){
            
$dat=explode(":"$posiciones[$i]);
            echo 
"<script language=\"JavaScript\">";
            echo 
"set_mo_lateral(document.getElementById(\"".$dat[0]."\"), \"".$dat[1]."\");<br/>";
            echo 
"</script>";
        } 

Ahora tengo el problema de escribirlo... No sabría cuando escribir los cambios en ese archivo. Las capas se muestran y ocultan mediante llamadas a JavaScript, por lo que, en principio, no puedo usar esas llamadas para modificar el archivo. ¿Algun consejo? Gracias



Gracias por el codigo de las cookies, aunque no lo use ahora, me lo guardo pa otro momento!
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
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 11:27.