Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376

    Cancellare sessione di un utente

    Ho degli utenti che si loggano nel proprio pannello web: per ogni utente si apre un classico file di sessione sul server.

    Se io amministratore voglio "buttare fuori" un utente (a parte disattivarlo lato db), posso cancellare il relativo file di sessione? se sì, come fare?

    perchè se uso
    codice:
    $_SESSION = array();
    session_destroy();
    cancello la mia sessione. Se volessi cancellare la sessione di un utente specifico?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    719
    Tecnicamente è impossibile da fare, ma c'è un modo!
    Allora, per fare questo devi avere COMPLETO accesso al computer che fa da server (o almeno conoscere il percorso del PHP).
    In pratica il PHP salva tutte le sessioni in una cartella (tmp di solito) che definisci nel .ini .
    Quello che ti serve fare è scrivere un semplicissimo programmino .bat (su win) o .sh (su Linux).
    Nel programma gli devi dire di cancellare il file contenente le sessioni dell'utente.
    Poi dal php ti basta fare shell_exec o exec per avviare il programma.


  3. #3
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Codice PHP:
    if(utenteBannato())
    {
         
    session_destroy();


  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    Originariamente inviato da simo22
    Tecnicamente è impossibile da fare, ma c'è un modo!
    Allora, per fare questo devi avere COMPLETO accesso al computer che fa da server (o almeno conoscere il percorso del PHP).
    In pratica il PHP salva tutte le sessioni in una cartella (tmp di solito) che definisci nel .ini .
    Quello che ti serve fare è scrivere un semplicissimo programmino .bat (su win) o .sh (su Linux).
    Nel programma gli devi dire di cancellare il file contenente le sessioni dell'utente.
    Poi dal php ti basta fare shell_exec o exec per avviare il programma.
    solo che il server non è mio, è in hosting e non ho accesso a quella parte del file system nè alla chiamate di sistema.

    Originariamente inviato da bstefano79
    if(utenteBannato())
    {
    session_destroy();
    }
    cioè?

  5. #5
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    Ti fai una funzione, quando l'utente bannato cerca di accedere al sito gli distruggi la sessione

  6. #6
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    oppure ancora meglio (perchè controllare ogni volta se un utente è bannato o meno costa) al momento del login ti salvi l'id di sessione nel db e quando banni vai a distruggere quella sessione

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2004
    Messaggi
    376
    devo agire da codice, non posso apportare modifiche al db purtroppo.
    Però scusa non ho capito una cosa:
    se uso session_destroy() distruggo tutte le sessioni dell'utente corrente quindi io admin mi auto banno.
    Mi servirebbe fare una cosa del tipo

    session_destroy('id_utente') o similare.

    È possbile?

  8. #8
    non puoi dal tuo pc (che è un client come tutti gli altri) distruggere la sessione di altri.
    La sessione però finchè non viene usata è inutile, quindi non ti interessa se rimane morta nel pc di un utente bannato. Quando scadrà sarà distrutta comunque.

    Ti interessa nel momento in cui un utente la utilizza per navigare all'interno del tuo pannello. A quel punto fai i controlli e se è da bannare fai in modo che sia lui a chiamare session_destroy().
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

  9. #9
    Per effettuare il ban di un utente, puoi fare in mille modi senza stare a cercare i'ID della sessione... che peraltro comporta che ad un successivo login dello stesso utente, si genera un altro ID di sessione e quindi di fatto quello entra ed esce come preferisce.

    Suppongo che tu avrai un pannello di amministrazione, dove potrai tranquillamente gestire gli accessi al sito da parte degli utenti.
    Ebbene, per ogni utente puoi prevedere un pulsante che rimanda ad uno script del tipo ban_utente.php.
    Nello script puoi prevedere che l'utente venga cancellato dalla tabella di log_utenti (quella che DEVI generare quando ogni utente si logga al sito) e magari la sostituzione della password con una casuale generata dallo stesso script.
    In questo modo, butti subito fuori l'utente non voluto e gli precludi la possibilità di avere accessi successivi!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.