Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208

    Best practice e logica per login

    Salve,
    non ho necessità di aiuti particolari nel codice, ma di alcune indicazioni sia sul modo migliore, sia sulla logica di come strutturare un sistema di login.

    Intanto la premessa: avrei scelto un sistema che mixa sessioni e cookies in modo da far persistere il login a piacimento.

    Scelto questo sistema, ho già capito che al termine del controllo degli $_POST provenienti dal form di login, devo settare un cookie con l'id utente salvata dentro.

    1) Su ogni pagina teoricamente io devo come prima cosa andare a fare il check se esiste un cookie valido con il nome che ho deciso arbitrariamente di assegnargli (mettiamo $_COOKIE['cookie']).

    2) Se il cookie esiste? io vorrei settare una funzione del tipo "Benvenuto $utente" per visualizzare il login effettuato. Per fare questo devo utilizzare l'id nel cookie per impostare una query, recuperare i dati che mi servono e settare di conseguenza gli $_SESSION necessari? E' questo il procedimento corretto per riaprire una sessione valida da loggato anche a distanza (per dire) di due giorni o c'è un modo diverso (e magari migliore)?


    3) punto terzo: la logica dei controlli. Devo nell'ordine:
    - controllare il cookie
    - controllare la session
    - reinviare in caso sia tutto negativo alla pagina login.php.

    E' questo l'ordine o il primo controllo si imposta sulla session?

    Grazie, e mi scuso se il post è un pò cervellotico.

  2. #2
    Quote Originariamente inviata da Korenaar Visualizza il messaggio
    1) Su ogni pagina teoricamente io devo come prima cosa andare a fare il check se esiste un cookie valido con il nome che ho deciso arbitrariamente di assegnargli (mettiamo $_COOKIE['cookie']).
    se il tuo sistema prevede l'uso dei cookie, si..

    2) Se il cookie esiste? io vorrei settare una funzione del tipo "Benvenuto $utente" per visualizzare il login effettuato. Per fare questo devo utilizzare l'id nel cookie per impostare una query, recuperare i dati che mi servono e settare di conseguenza gli $_SESSION necessari? E' questo il procedimento corretto per riaprire una sessione valida da loggato anche a distanza (per dire) di due giorni o c'è un modo diverso (e magari migliore)?
    programmi in procedurale o oop?

    3) punto terzo: la logica dei controlli. Devo nell'ordine:
    - controllare il cookie
    - controllare la session
    - reinviare in caso sia tutto negativo alla pagina login.php.
    si
    Questa volta, più che un voto.. è favoreggiamento.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Grazie Al_katraz per la risposta intanto.

    Ovviamente ho continuato a rimuginarci su in queste ore. Dimmi se sbaglio:

    Il primo check credo che sia sulla SESSION invece, visto che devo vedere se c'è una sessione login attiva.

    Se non c'è, credo di dover controllare se per caso c'è un cookie['SESSION'] attivo.

    Se c'è il cookie, utilizzo l'id salvata lì dentro dall'eventuale login precedente e lancio una query per recuperare le altre varie variabili di sessione utile (roba tipo permessi salvati in db etc.etc.)

    Se non c'è neanche il cookie, a questo punto reindirizzo alla pagina di login
    Forse è un pò complesso come sistema, mi rendo conto che ci sono dei passaggi di questa cosa che mi restano un pò indigesti. Considera che, come ti dicevo sopra, nel db utente andrò a salvare anche i permessi di accesso a varie aree nonchè a funzioni specifiche, ergo il cookie da solo non mi basta come sistema unico di controllo.

    In realtà lo utilizzo solo per rendere lunga una settimana la connessione, risolverei parecchie cose (e ignoro come) se potessi fare altrettanto con le semplici SESSION. Si tratta di un sistema a bassissima frequentazione e dunque non ho problemi di memoria riguardo le SESSION.


    P.S Si, tutto in OOP. Sto cercando di non usare proprio più il procedurale, a meno di passaggi relativamente semplici e slegati dal resto del sistema.

  4. #4
    Allora in OOP teoricamente dovresti passare le classi che ti servono per aggregazione.

    Non so se hai un sistema centralizzato per la gestione delle richieste: tipo MVC o simili

    solitamente:
    Codice PHP:
    // sessioni sempre disponibili
    $s = new Session();
    // utente generico di default che cambia se viene effettuato un login
    $u = new User();
    // database
    $pdo = new Database();
    //vista
    $view = new View'layout' );
    // access list
    $acl = new acl$pdo );

    $fc = new frontController$acl );
    // qui puoi fare il controllo se l'utente ha il permesso di vedere la pagina
    // utilizzando la classe acl
    $fc->run$pdo$view$user );

    echo 
    $view->render(); 
    se invece usi un router/dispatcher il controllo dei permessi lo fai sul dispatcher.

    Quando viene effettuato il login, la classe "user" viene popolata con i dati dell'utente. Questi dati vengono utilizzati per fare il controllo dei permessi.
    Questa volta, più che un voto.. è favoreggiamento.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    208
    Uhm...grazie mille ma credo che hai molto sopravvalutato il mio livello

    In ogni caso è molto interessante questo breve esempio, mi fa capire che probabilmente ancora non ragiono in full OOP come invece pensavo di fare.

  6. #6
    Questa volta, più che un voto.. è favoreggiamento.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.