Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254

    Impedire che due macchine siano loggate contemporaneamente con lo stesso utente

    Salve a tutti,

    utilizzo PHP 5 e dispongo di una tabella utenti in cui memorizzo la psw criptata e faccio tutti i controlli di riconoscimento. In fase di login inizializzo una variabile Di sessione per memorizzare il profilo dell'utente: $_SESSION['profilo']. In fase di logout la distruggo. Forse quanto ho detto non serve a nulla riguardo alla mia domanda:

    Ho bisogno di impedire che due macchine siano loggate contemporaneamente con lo stesso utente. Avete qualche suggerimento? Accetto anche consigli che mi fanno cambiare struttura alla tabella degli utenti. Vi ringrazio anticipatamente.

    Angelo

  2. #2
    Potresti fare anche un controllo a livello di ip.

    Utente 1 è collegato dal pc 1 con indirizzo ip xxx.xxx.xxx.xxx, utente 2 usa i dati di utente 1 dal pc 2 con ip yyy.yyy.yyy.yyy.

    Caso 1) Fai loggare il pc 2 e fai "sloggare" il pc 1.
    Caso 2) Se non è passato almeno X tempo dall'inattività (quindi dovresti segnarti ogni attività dell'utente) non puoi fare il login da macchine differenti da quella storata a database (indicato come ip).

    Personalmente non sapendo niente di più del tuo caso ti consiglierei il caso 1. in questo modo se sei su internet e non in una intranet hai meno problemi di gente che ti manda messaggi per chiederti di sbloccarli.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Beh l'indirizzo ip mi sarebbe andato bene se non fosse che ci sono casi di macchine aziendali con lo stesso indirizzo ip. Ma invece dell'ip posso memorizzare una stringa random molto lunga db. Ma sia che parlo di ip, sia che parlo di stringa, ugualmente devo controllare in ogni pagina se i valori corrispondono.

    Poi, avevo valutato i due casi: Nel secondo, in particolare, il tempo mi frega. Se io chiudo il browser, senza fare il log out, non posso + accedere finchè non scade il tempo. E quindi che tempo mettere?E' un casino.

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    utilizza i cookie, che sono legati in maniera univoca alla singola macchina.

    al login imposti una variabile di cookie e la memorizzi in una colonna del db dove risiedono i dati di login, e al logout o scadenza di sessione la cancelli.

    per evitare i doppi login fai un doppio controllo quindi: sia che i dati di login siano corretti, e sia che la variabile di cookie sia la stessa presente sulla macchina. in caso contrario noghi l'accesso!

    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Ok, utilizzare i cookie era uno degli obbiettivi che mi ero preposto ma non si corre il rischio che alcune macchine non supportano i cookie o che non sono abilitati?

    Per la questione del tempo di sessione ho un dilemma amletico: un tempo troppo breve mi porta un rischio in fase di inserimenti lunghi, l'utente perderebbe tutto il lavoro se quando invia i dati inseriti la sessione è scaduta; mentre un tempo troppo lungo è rischioso nel momento in cui l'utente si dimentica di fare il logout, dovrebbe poi aspettare che la sessione scade. Per cui quanto potrei impostare come tempo di sessione?

    Comunque appena imposto i cookie vorrei farti altre domande, per cui chiedo agli amministratori di non chiudere ancora il thread.

    Grazie, Angelo.

  6. #6
    puoi far scegliere all'utente quanto stare loggato.
    alcuni forum usano sessioni + cookie e puoi decidere se stare loggato 1 ora, tot ore, tot minuti o a tempo indefinito da macchina X

  7. #7
    Originariamente inviato da dottwatson
    utilizza i cookie, che sono legati in maniera univoca alla singola macchina.

    al login imposti una variabile di cookie e la memorizzi in una colonna del db dove risiedono i dati di login, e al logout o scadenza di sessione la cancelli.

    per evitare i doppi login fai un doppio controllo quindi: sia che i dati di login siano corretti, e sia che la variabile di cookie sia la stessa presente sulla macchina. in caso contrario noghi l'accesso!

    Beh ma cosi' come fa uno a loggarsi la prima volta visto che non ha il cookie?

    Comunque secondo me l'unica strada sensatamente percorribile, visto come funziona l'http, e' che se qualcuno si logga mentre qualcun altro e' gia' loggato, il primo perde i diritti di accesso e l'ultimo arrivato invece accede.

  8. #8
    puoi far scegliere all'utente quanto stare loggato.
    alcuni forum usano sessioni + cookie e puoi decidere se stare loggato 1 ora, tot ore, tot minuti o a tempo indefinito da macchina X

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da k.b
    Beh ma cosi' come fa uno a loggarsi la prima volta visto che non ha il cookie?

    Comunque secondo me l'unica strada sensatamente percorribile, visto come funziona l'http, e' che se qualcuno si logga mentre qualcun altro e' gia' loggato, il primo perde i diritti di accesso e l'ultimo arrivato invece accede.
    c'è un altro campo di cui non ho parlato, ed è quello della data (timestamp). questo campo ptrebbe avere 2 funzioni: flag per il garbage che pulisce la tabella dei login e controllo di login disponibile oppure no in base anche al momento di login, e magari controllo degli utenti connessi

    codice:
    -----------------------------------------------------------
    id  |usename  |passeord  |  time   | sess_id  | cookieval |
    -----------------------------------------------------------
    1   | ciccio  | ciccione |  123456 | a89w4jd  | 874673hd  | <-- sessione occupata
    1   | mario   | marione  |         |          |           | <-- sessione libera
    ----------------------------------------------------------
    se il record NON presenta sess_id,time e cookieval il login è disponibile, ovviando al problema anche al problema del primo login
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  10. #10
    Sennò crei un campo "status" o simile nella tabella degli utenti.
    Quando un utente si logga riempi tale campo con il timestamp (poi spiego perchè).

    Se un altro utente cerca di loggarsi con lo stesso username, prima controlli che il campo "status" sia vuoto o che il timestamp che contiene sia vecchio: se contiene un timestamp recente impedisci l'accesso al secondo utente.

    Quando un utente fa il log-out cancelli il timestamp (o lo poni nel passato).

    Poichè alcuni utenti usciranno senza un logout esplicito, usa il timestamp invece di un semplice true/false.

    Così dopo un certo tempo (arbitrario, che tu stesso dovrai decidere) potranno comunque ri logarsi.
    Tecnolgie per l'arte.
    Arti per la tecnologia.
    softhare

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.