es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo mostrar la última visita en mi sitio web con una cookie?

La idea básica es que cada vez que alguien visita el sitio web, la cookie guarda la fecha y hora. Si el usuario visita el sitio web varias veces, la cookie solo muestra la fecha y hora de la última visita del usuario.
En este momento tengo el siguiente código que funciona pero siempre actualiza la fecha y hora:

var today = new Date();
var date = today.getDate()+'-'+(today.getMonth()+1)+'-'+today.getFullYear();
var time = today.getHours()+':'+today.getMinutes()+':'+today.getSeconds();
var dateTime = date+' at '+time;
document.cookie = 'last_visit='+ dateTime 

Edit: Para otras personas que puedan necesitar ayuda, el siguiente código parece funcionar:

var today = new Date();
var date = today.getDate()+'-'+(today.getMonth()+1)+'-'+today.getFullYear();
var time = today.getHours()+':'+today.getMinutes()+':'+today.getSeconds();
var dateTime = date+' at '+time;
function getCookieValue(a) {
    const b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)');
    return b ? b.pop() : '';
}
console.log ("getCookieValue " + getCookieValue("last_visit"));
document.cookie = 'last_visit='+ dateTime
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para modificar el código para que la cookie solo muestre la fecha y hora cuando el usuario visitó por última vez, necesitamos agregar una función que recupere el valor de la cookie “last_visit” y la actualice solo si la fecha ha cambiado.

    El código modificado se vería así:

    var today = new Date();
    var date = today.getDate()+'-'+(today.getMonth()+1)+'-'+today.getFullYear();
    var time = today.getHours()+':'+today.getMinutes()+':'+today.getSeconds();
    var dateTime = date+' a las '+time;
    
    function getCookieValue(a) {
        const b = document.cookie.match('(^|;)\\s*' + a + '\\s*=\\s*([^;]+)');
        return b ? b.pop() : '';
    }
    
    var lastVisit = getCookieValue('last_visit');
    
    if (lastVisit) {
        if (lastVisit.indexOf(date) == -1) {
            document.cookie = 'last_visit=' + dateTime;
            console.log("Cookie actualizada a " + dateTime);
        } else {
            console.log("La última visita fue el " + lastVisit);
        }
    } else {
        document.cookie = 'last_visit=' + dateTime;
        console.log("Cookie establecida en " + dateTime);
    }
    

    Lo que hace este código es:

    1. Define la función getCookieValue() que recupera el valor de una cookie por su nombre.
    2. Obtiene el valor de la cookie “last_visit” usando getCookieValue().
    3. Si la cookie “last_visit” existe:
      • Verifica si la parte de la fecha en el valor de la cookie coincide con la fecha de hoy.
        • Si no coincide, actualiza la cookie “last_visit” con la fecha y hora de hoy.
        • Si coincide, muestra un mensaje indicando cuándo fue la última visita del usuario.
    4. Si la cookie “last_visit” no existe, la establece con la fecha y hora de hoy y muestra un mensaje.

    De esta manera, la cookie “last_visit” solo se actualizará si el usuario visita el sitio web en un día diferente, pero mostrará la fecha y hora de la última visita en caso contrario.

Comments are closed.