• User Attivo

    Logout + Cancellazione

    Salve,
    voglio fare in modo che quando un utente si collega al sito viene memorizzato nella tabella utenti_collegati con nome cognome e id.
    Fin Qui tutto ok è riuscito alla perfezione, il problema sorge quando l'utente si disconnette, ovvero devo far in modo di cancellare "quelll'utente " dalla tabella utenti_collegati.
    Avevo pensato così
    [php]
    $id = $_REQUEST['id']
    $query = "DELETE * FROM utenti_online WHERE id='$id'";
    session_destroy();
    [/php]
    Ma non funge!
    dove sbaglio ? e pure gli passo il parametro id e coincide alla perfezione... il logout viene effettuato ma l'utente non viene cancellato dalla tabella utenti_collegati :mmm:


  • User

    E' sbagliata la sintassi della query in primis, devi eliminare il *.
    Secondariamente devi mandare in esecuzione la query con un mysql_query() se non lo hai fatto 😉


  • User Attivo

    @BackInBlack said:

    E' sbagliata la sintassi della query in primis, devi eliminare il *.
    Secondariamente devi mandare in esecuzione la query con un mysql_query() se non lo hai fatto 😉
    è lo stesso... ho provato solo a cancellare il nome dell'utente e ho eseguito la query così
    [php]
    $query = "DELETE utente FROM utenti_collegati WHERE id='$id'";
    mysql_query($query);
    [/php]
    ma non va! non funziona


  • User

    Prova a fare un echo della query nella variabile, a naso ho il sospetto che non venga valorizzato $id correttamente.

    Altrimenti, sistema il mysql_query nel seguente modo.
    [PHP]mysql_query($query)or die(mysql_error());[/PHP]


  • User Attivo

    Restituisce 1 Tabella 'user' sconosciuta in MULTI DELETE
    se la query è una cosa del genere
    1 sarebbe l'id che ho fatto stampare.
    [php]
    $query = "DELETE user FROM utenti_online WHERE id='$id'";
    mysql_query($query)or die(mysql_error());
    [/php]
    mentre stampa questo errore
    Errore di sintassi nella query SQL vicino a '* FROM utenti_online WHERE id='1'' linea 1
    se la query è questa
    [php]
    $query = "DELETE * FROM utenti_online WHERE id='$id'";
    mysql_query($query)or die(mysql_error());
    [/php]:?


  • User

    @infosicurezza said:

    Restituisce 1 Tabella 'user' sconosciuta in MULTI DELETE
    se la query è una cosa del genere
    1 sarebbe l'id che ho fatto stampare.
    [php]
    $query = "DELETE user FROM utenti_online WHERE id='$id'";
    mysql_query($query)or die(mysql_error());
    [/php]
    mentre stampa questo errore
    Errore di sintassi nella query SQL vicino a '* FROM utenti_online WHERE id='1'' linea 1
    se la query è questa
    [php]
    $query = "DELETE * FROM utenti_online WHERE id='$id'";
    mysql_query($query)or die(mysql_error());
    [/php]:?

    Me ne sono accorto ora che avevi sbagliato nuovmente la sintassi della query SQL, scrivi così:
    [php]$query = "DELETE FROM utenti_online WHERE id='$id'";
    mysql_query($query)or die(mysql_error());[/php]


  • User Attivo

    Si così funziona, anche se ho dovuto apportare delle modifiche al codice "Non della query che mi hai scritto" comunque ora il problema è come scrivere il codice che se l'utente chiude il browser si deve cancellare l'utente dalla tabella, mi spiego meglio.

    Ieri sera ho chiuso il browser e ho spento il pc senza effettuare il logout, stamattina ho riacceso tutto, e mi sono accorto che gli utenti di ieri stavano collegati ancora senza aver effettuato il login (quindi stavano disconnessi dal sito)


  • User

    Ti suggerisco allora di aggiungere un ulteriore campo alla tabella dei presenti, che puoi chiamare ad esempio "last_active" e lo definisci datetime.

    Ogni volta che un utente connesso apre una pagina del sito aggiorni quel campo correlato alla riga dell'utente in questione a NOW().

    Successivamente imposti una query in cui elimini tutti i record dove "DATE_ADD(last_active, INTERVAL 30 MINUTE) <= NOW()".

    Praticamente funziona così: ogni volta che un utente si muove nel sito viene marcato come attivo, nel momento in cui è inattivo da 30 minuti o più il primo utente che aggiorna la pagina manda in esecuzione la seconda query cancellando quindi tutti gli inattivi dal sito.

    In questo modo però devi anche prevedere chi magari si ferma 30 minuti su una pagina e poi riprende a navigare sul sito sempre da connesso, ma la soluzione più facile è chiudergli la sessione dopo 30 minuti.


  • User Attivo

    Ho capito come intendi, ma non conosco quelle funzioni non so come muovermi!