Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    112

    come gestire strutturalmente gli utenti?

    Tralasciando login e logut, salvataggio di sessioni e cookie, vorrei sapere come sarebbe meglio (o come fate voi) organizzare la struttura delle cartelle o degli script. Mi spiego meglio:

    mettiamo che abbia, all'inizio, 3 livelli di privilegi:

    amministratore
    moderatore
    utente

    questi utenti vengono trattati tutti ugualmente per le pagine pubbliche, mentre poi devono svolgere diverse funzioni nelle pagine private, ad esempio:

    l'amministratore deve gestire gli utenti, le news e le informazioni su se stesso
    il moderatore deve gestire le news e le informazioni su se stesso
    l'utente deve gestire le informazioni su se stesso

    insomma una cosa scalabile, in cui a partire dall'alto si possono fare tutte le cose che si possono fare nei livelli inferiori e non viceversa

    prevedendo anche l'aggiunta di nuovi livelli, con permessi sulle funzioni gestite sul database, come conviene strutturare l'albero delle cartelle o degli script?

    • creare un unica cartella "/private/" in cui mettere tutti gli script e poi le pagine strutturarle con degli switch? tipo:

    Codice PHP:
    switch (variabile privilegio)

    case 
    "amministratore"
    mostra il pannello completo
    case "moderatore"
    mostra pannello completo ma nascondi quello sulla gestione degli utenti
    ... 
    • creare un unica cartella "/private/" in cui mettere tutti gli script e poi le pagine strutturarle con un controllo per ogni cosa da mostrare? tipo:

    Codice PHP:
    if (privilegio >= amministratore)
    mostra pannello gestione utenti

    if (privilegio >= moderatore)
    mostra pannello gestione news

    if (privilegio >= utente)
    mostra pannello proprie info
    ... 
    • creare una cartella per ogni livello in cui si differenziano gli script, tipo "/amministratore/", "/moderatore/", "/utente/"


    i miei dubbi sorgono in particolare dal fatto che ognuno dei tre metodi (o se ce ne sono altri), possono incontrare problemi all'aumentare dei livelli o della complessità degli script.

    il primo può essere molto ridondante perchè per ogni script di un livello dovrei replicare il codice nei "case" dei livelli superiori

    l'ultimo credo sia quasi irrealizzabile se si prevede di far gestire la creazione di nuovi livelli dall'amministratore perchè questo dovrebbe rimettere mano al codice e copiare parte dei file .php nella nuova cartella "/nuovolivello/"

    il secondo mi sembra quello migliore tra i 3 ma non sono sicuro che sia "il migliore" in generale.

    insomma mi piacerebbe sapere come si struttura un progetto di questo tipo, dato che guardando il codice di aree riservate di forum o blog mi sono perso quasi subito!

    grazie

  2. #2
    sai, io penso che il modo migliore è guardare com'è stato fatto in altri casi (non necessariamente web).
    Per esempio, la struttura di accesso ai file di Unix permette di associare a ciascun file un Proprietario ed un Gruppo, inoltre sono indicati i privilegi di accesso per propriertario e per gruppo:

    Per esempio un file "pippo" può avere come proprietario "luigi" e come gruppo "sviluppatori", con i permessi 640, che significa che il proprietario può leggere (4) + scrivere (2) il file, i membri del gruppo possono leggere (4) il file, e tutti gli altri non possono neanche vederlo (0).

    Non ti sto dicendo di implementare una cosa simile, ma può essere una buona idea quella di creare una tabella di Gruppi (che sarebbero Administrator, Mod, Use, etc), ed una tabella Privilegi con Foreign Key su Gruppi dove ogni riga indica i permessi sul singolo file per un Gruppo (del tipo, se un gruppo "User" può accedere ad un file pippo.php nella tabella Privilegi c'è la riga pippo.php con l'id del gruppo "User").

    A questo punto, quando un utente si autentica, si controlla il gruppo e si salva, poi basta una "select count(*) from privilegi where idGruppo = $idGruppoDellUtente and file LIKE 'pippo.php'" per vedere se l'utente può accedervi.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2003
    Messaggi
    112
    ti ringrazio inanzitutto per la risposta, poi ti chiedo: quindi il controllo lo faresti sul file? cioè all'inizio di ogni .php faresti una query e controlleresti se la pagina che si sta cercando di aprire può essere visualizzata dall'utente loggato?

  4. #4
    io lo fare sia lì, sia uno step prima: per arrivare ad una pagina "solitamente" si usa un link nel sito. Impedisci agli utenti che non possono accedere alla pagina di vedere il link e l'80% del lavoro è fatto.

    Comunque, DEVI fare il controllo ad ogni pagina, anche perché prima controlli che l'utente sia autenticato, poi puoi aggiungere un controllo se l'utente può accedere alla pagina. Se non può accedere lo ridirezioni su di una pagina Che dice solo "Non hai i privilegi necessari per visualizzare la pagina richiesta"

    P.S. Per ogni pagina, intendo che fai un include in ogni pagina di un file che si occupa di fare tutti i controlli, così ti basta modificare quello e fi cambiamenti in tutte le pagine

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.