Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543

    Consiglio su come realizzare funzione "ultima visita utente"

    Buona sera,
    in un'applicazione di registrazione/login utenti, vorrei implementare una funzione che:
    - dica all'utente a quando risale la sua ultima visita;
    - compaia solo una volta ad ogni accesso.

    Diciamo che qualche idea ce l'ho, ma vorrei evitare di utilizzare i cookies (perchè non so usarli bene) e tenere traccia, invece, degli accessi in un Database.
    Voi cosa mi consigliate?
    "To iterate is human, to recurse, divine." (R.(Heller))

  2. #2
    Beh ogni volta che l'utente effettua il login salvi la data corrente (o in un file o in un DB).
    Quando effetua il login leggi quel risultato e lo metti in sessione, dopodiche vedi di nuovo se la data corrente è diversa da quella ed in quel caso sovrascrivi la data.

  3. #3
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Infatti, è proprio quello che ho fatto:
    ogni volta che l'utente effettua il login, inserisco (o magari sovrascivo perchè sennò avrò infiniti dati) la data e il nome utente in una tabella del DB e poi faccio un controllo del genere:
    Codice PHP:
    $query "SELECT timestamp,username FROM login_data WHERE username='$_SESSION[user]' AND timestamp<$time+5 ORDER BY timestamp DESC"
    E' giusta la select in questo modo? (a livello di logica)
    "To iterate is human, to recurse, divine." (R.(Heller))

  4. #4
    Non ne ho la piu pallida idea, non uso MySQL dato che trovo i file molto più comodi.
    Se vuoi utilizzare i file:
    Codice PHP:
    session_start();

    $date //tua data;

    if(file_exists($_SESSION["user"]."txt")) {

    $fp fopen($_SESSION["user"]."txt","r+");
         
    $readfread($fp5000);
    fclose($fp);
    $_SESSION["last_visit"] = $read;

    unlink($_SESSION["user"]."txt","r+");

    $fp fopen($_SESSION["user"]."txt","x+");
         
    fwrite($fp$date);
    fclose($fp);

    }elseif(!
    file_exists($_SESSION["user"]."txt")){

    $fp fopen($_SESSION["user"]."txt","x+");
         
    fwrite($fp$date);
    fclose($fp);

    $_SESSION["last_visit"] = $date;


  5. #5
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Apprezzo il tuo aiuto, ma preferirei rimanere su MySql (perchè io invece non so proprio lavorare con i files ) e poi ho l'intera applicazione incentrata esclusivamente su MySql, perciò...

    A sto punto aspetto qualcuno più pratico di Mysql.
    "To iterate is human, to recurse, divine." (R.(Heller))

  6. #6
    Guarda che quello che ho postato funziona da solo, senza alcuna modifica e puoi usare i dati ovviamente anche in MySQL, senza cambiare una virgola nel tuo codice SQL.

  7. #7
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Si non lo metto in dubbio, ma era solo per avere la stessa linea guida in tutta l'applicazione.
    Anche perchè mettere dei dati in un file di testo non so quanto possa essere sicuro (al di là degli spider dei motori di ricerca che potrebbero indicizzarlo, ma ci si può mettere un "disallow" nel robot), ma anche per una questione di sicurezza visto che è uno degli aspetti più importanti che sto curando.

    Vedrò cosa fare allora.

    Se qualcun'altro ha altre idee, si faccia pure avanti!
    "To iterate is human, to recurse, divine." (R.(Heller))

  8. #8
    Originariamente inviato da the-bit
    Infatti, è proprio quello che ho fatto:
    ogni volta che l'utente effettua il login, inserisco (o magari sovrascivo perchè sennò avrò infiniti dati) la data e il nome utente in una tabella del DB e poi faccio un controllo del genere:
    Codice PHP:
    $query "SELECT timestamp,username FROM login_data WHERE username='$_SESSION[user]' AND timestamp<$time+5 ORDER BY timestamp DESC"
    E' giusta la select in questo modo? (a livello di logica)
    Perchè specifichi nella clausola where anche il timestamp?
    Ti dovrebbe bastare recuperare l'ultimo (ed unico) accesso dello user nella session.

    Codice PHP:
    $query "SELECT last_access FROM login_data WHERE username='$_SESSION[user]'"

  9. #9
    Utente di HTML.it L'avatar di the-bit
    Registrato dal
    Feb 2005
    Messaggi
    543
    Si, di sicuro sarebbe molto più sensato.
    Ma ho specificato anche il timestamp perchè inizialmente pensavo di non sovrascrivere le righe del DB, ma di crearne una nuova ogni volta che un utente facesse un accesso.
    Ma poi ho pensato che questo potrebbe far crescere a dismisura il DB (anche avendo 100 utenti che mediamente effettuano 5 accessi al giornoa testa...avrei già 500 righe al giorno)

    Sarebbe troppo?
    "To iterate is human, to recurse, divine." (R.(Heller))

  10. #10
    beh, non ha senso perchè l'ultimo accesso sarà sempre e solo uno.
    se poi hai necessità di mantenere uno storico degli accessi è un altro conto.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.