Sessioni php

Discussione in 'PHP' iniziata da AC1, 6 Settembre 2019.

  1. AC1

    AC1 Nuovo Utente

    Registrato:
    13 Novembre 2017
    Messaggi:
    25
    Mi Piace Ricevuti:
    2
    Punteggio:
    3
    Sesso:
    Maschio
    Occupazione:
    TLC/INFORMATICO/DEVELOPER/GRAPHIC DESIGNER
    Località:
    Barletta
    Sto realizzando una web application con
    Html
    Css
    Php
    Js


    Gli utenti hanno dei livelli divisi per funzionalità;
    Mi spiego meglio

    Utente1 livello 0 administrator
    Utente2 livello 1 limitato

    Il mio problema nasce dal fatto che non posso utilizzare due finestre del browser separate con entrambi gli account aperti

    Penso il problema risieda nelle variabili di sessione del php


    Oggi in un test avevo 3 utenti con profili diversi aperti in 3 finestre dello stesso browser, ma dopo alcune operazioni mi sono trovato con tutte le finestre collegate allo stesso utente con cui ho fatto la prima operazione.


    Qualcuno potrebbe darmi una mano ??
     
  2. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Stai utilizzando qualche framework o stai facendo tutto a manina?

    Comunque, solitamente quando si utilizzano le ACL bisognerebbe settare i soli controller agganciando dei middleware solo dove è opportuno lasciando la logica a parti esterne (libs)...
    Mi spiego: (C=controller, M=model, V=View)
    Utente1 -> role:admin, permissions:all
    Utente2 -> role:user,permissions:restricted

    Per semplicità facciamo il solo esempio della visualizzazione del menù, caricando i dati dal DB.
    U1 - U2 (sono gli utenti):

    ControllerHeader{
    1. Chiamo il Model (torna un Obj) senza filtri utenti (solo per semplicità)
    2. Verifico che tipologia di permessi ha l'utente
    3. Setto i vari parametri
    4. Stampo a video (VIEW) il risultato
    }

    Es. roles
    id,ruolo
    1,admin
    2,user

    Es. permissions
    id,type
    1,all
    2,Creare Un nuovo post
    3, Modificare Un post
    4,Visualizzare i risultati

    Es. user,role_permission
    role_id,permission_id
    1,1,1
    2,2,4
    1,1,2
    1,1,3


    Es. menuDB:
    id, nome_menu, altri parametri......., role
    x, esempio,........................................., ["admin","user"]

    ControllerCreaNuovoPost{
    1. Chi può fare cosa????? Quindi la prima operazione ipotizzando di aver salvato il nome del metodo nel DB verifichi se l'utente può effettuare questa operazione o meno
    2. Effettua i vari controlli e chiamo il Model
    3. Output Buffer
    }


    In questa logica esemplificata, si evince:
    • La view non filtra i dati
    • Il model opera solo sul DB
    • il controller effettua le varie permutazioni
    • la logica deve essere prevista in altri luoghi e non sulle VIEW.

    Spero si capisca...

    Quindi tornando a:
    Rispondo: Dipende da come hai configurato la tua APP.
     
  3. AC1

    AC1 Nuovo Utente

    Registrato:
    13 Novembre 2017
    Messaggi:
    25
    Mi Piace Ricevuti:
    2
    Punteggio:
    3
    Sesso:
    Maschio
    Occupazione:
    TLC/INFORMATICO/DEVELOPER/GRAPHIC DESIGNER
    Località:
    Barletta
    Tutto a mano è il codice ....

    Il mio problema non è nel db ma a livello di sessioni del php... non si potrebbe restringere le sessione alle finestre del browser ?
     
  4. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    ok.......
    Nelle sessioni aggiungi la tipologia utenza, così da averne diverse. almeno in debug...
     
  5. AC1

    AC1 Nuovo Utente

    Registrato:
    13 Novembre 2017
    Messaggi:
    25
    Mi Piace Ricevuti:
    2
    Punteggio:
    3
    Sesso:
    Maschio
    Occupazione:
    TLC/INFORMATICO/DEVELOPER/GRAPHIC DESIGNER
    Località:
    Barletta
    Per ogni pagina ho inserito

    Codice:
    <?php
    
      session_start();
      $u=$_SESSION['u'];
      $profilo = $_SESSION['profilo'];
    
    ?>
    <html>
        <head>
          <title>HAS: <?php echo $u;?></title>
    
    dove $u è l'user dell'utente loggato e profilo è il livello associato alle funzioni che l'utente può fare.

    il test è stato fatto con tre livelli ognuno aperto in tre finestre di chrome
    finestra 1 utente 1 inserimento anagrafica
    finestra 2 utente2 elaborazione anagrafica
    finestra3 utente3 statistiche dei dati inseriti

    dopo l'inserimento dei dati anagrafici dell'utente 1, le altre due finestre si sono aggiornate come se si fosse collegato l'utente 1.


    In sintesi vorrei gestire i diversi utenti in unico pc e browser
     
  6. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    3 finestre intese come finestre o come Schede?

    Se sono "schede" le sessioni, i cookie, localstorage sono condivisi, se non finestre (new browser) sono separate!
     
  7. AC1

    AC1 Nuovo Utente

    Registrato:
    13 Novembre 2017
    Messaggi:
    25
    Mi Piace Ricevuti:
    2
    Punteggio:
    3
    Sesso:
    Maschio
    Occupazione:
    TLC/INFORMATICO/DEVELOPER/GRAPHIC DESIGNER
    Località:
    Barletta
    si scusami, schede
     
  8. AC1

    AC1 Nuovo Utente

    Registrato:
    13 Novembre 2017
    Messaggi:
    25
    Mi Piace Ricevuti:
    2
    Punteggio:
    3
    Sesso:
    Maschio
    Occupazione:
    TLC/INFORMATICO/DEVELOPER/GRAPHIC DESIGNER
    Località:
    Barletta
    c'è una soluzione alternativa ?
     
  9. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    utilizzando 3 finestre diverse... altrimenti utilizza il concetto di IMPERSONATE di gitlab...
    Ossia tu ti logghi come Admin -> Impersoni Utente1 e così via...

    In alternativa potresti scriverti un piccolo helper che in base ad un parametro in get (quindi locale alla SCHEDA) ti fa impersonare un determinato utente...
     
    A AC1 piace questo elemento.
  10. AC1

    AC1 Nuovo Utente

    Registrato:
    13 Novembre 2017
    Messaggi:
    25
    Mi Piace Ricevuti:
    2
    Punteggio:
    3
    Sesso:
    Maschio
    Occupazione:
    TLC/INFORMATICO/DEVELOPER/GRAPHIC DESIGNER
    Località:
    Barletta



    mi conviene fare un controllo per far accedere una sola persona per volta da quall'ind ip
     
  11. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    E no... Scusa la domanda, se da casa tua siete in 3 a voler testare l'app solo 1 si può loggare, in quanto uscite dallo stesso indirizzo...

    Non è corretta questa policy!
     
  12. AC1

    AC1 Nuovo Utente

    Registrato:
    13 Novembre 2017
    Messaggi:
    25
    Mi Piace Ricevuti:
    2
    Punteggio:
    3
    Sesso:
    Maschio
    Occupazione:
    TLC/INFORMATICO/DEVELOPER/GRAPHIC DESIGNER
    Località:
    Barletta
    Si questo lo so, per l’applicazione che sto sviluppando ha più senso il login di un utente per volta sulla stessa macchina;

    Quello che avevo chiesto io inizialmente era per una verifica di test con diversi utenti e per un controllo in caso gli utenti adottassero la soluzione delle schede
     
  13. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Allora sarebbe meglio il mac e non l'ip!

    3 pc nella stessa rete sono 3 macchine diverse con lo stesso ip d'uscita! Non ha senso....
     
  14. AC1

    AC1 Nuovo Utente

    Registrato:
    13 Novembre 2017
    Messaggi:
    25
    Mi Piace Ricevuti:
    2
    Punteggio:
    3
    Sesso:
    Maschio
    Occupazione:
    TLC/INFORMATICO/DEVELOPER/GRAPHIC DESIGNER
    Località:
    Barletta
    Hai ragione. Grazie


    Inviato dal mio iPhone utilizzando Tapatalk
     
  15. AC1

    AC1 Nuovo Utente

    Registrato:
    13 Novembre 2017
    Messaggi:
    25
    Mi Piace Ricevuti:
    2
    Punteggio:
    3
    Sesso:
    Maschio
    Occupazione:
    TLC/INFORMATICO/DEVELOPER/GRAPHIC DESIGNER
    Località:
    Barletta

    Sto codificando quello che ci siamo detti in questa discussione, voglio capire assieme al tuo aiuto se il mio ragionamento può funzionare.


    PREMESSA
    l'utente A non può essere loggato su due pc differenti e su un pc deve essere loggato solo un utente per volta.


    IDEA
    Al momento del login mi memorizzo nel db in una tabella predisposta
    user | ip o macaddres | variabile booleana

    esempio
    utente A | ip: xxx.xxx.xxx.xxx | login si (ho pensato che il logout sarà temporizzato per inattività)

    quindi nella pagina di login fare gli opportuni controlli con questa tabella per dare o meno l'accesso al sistema, oppure sai consigliarmi qualche altro metodo
     
  16. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    926
    Mi Piace Ricevuti:
    53
    Punteggio:
    28
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    In questo caso basterebbe controllare se esiste la sessione dell'utente A indipendentemente dal sui ip/mac...


    Idle-logoff

    Per il logoff esistono molti plugin da jquery a react....
     
  17. AC1

    AC1 Nuovo Utente

    Registrato:
    13 Novembre 2017
    Messaggi:
    25
    Mi Piace Ricevuti:
    2
    Punteggio:
    3
    Sesso:
    Maschio
    Occupazione:
    TLC/INFORMATICO/DEVELOPER/GRAPHIC DESIGNER
    Località:
    Barletta
    Ok, ti ringrazio


    Inviato dal mio iPhone utilizzando Tapatalk
     
Sto caricando...
Discussioni simili - Sessioni php
  1. smartwork
    Risposte:
    3
    Visite:
    266
  2. Bluelight
    Risposte:
    3
    Visite:
    594
  3. alexanderale
    Risposte:
    3
    Visite:
    338
  4. jotes
    Risposte:
    3
    Visite:
    353
  5. tokyo74
    Risposte:
    1
    Visite:
    385

Condividi questa Pagina