Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    43

    Login (Session e cookie)

    Salve ragazzi,
    Mi sono sempre chiesto una cosa, e ora ho bisogno di una vostra conferma perché devo proprio metterla in atto: i login con le session, in modo professionale, hanno bisogno di una tabella? e quelli con i cookie?

    Se sì, scusate per la mancanza d'esperienza, come potrebbero essere strutturate le tabelle?

  2. #2
    ...


    Modo Professionale.... paroloni

    Diciamo che devi fare il programma in funzione del target.

    Un sito chiamato amatoriale o professionale ha di solito due scelte:

    1) Fare in modo che l'utente non debba inserire i dati di accesso tutte le volte che visita il sito

    2) Per sicurezza fargliele inserire ogni volta.


    Opzione 1:

    Database Mysql

    Tabella utenti

    (campi)

    - Id_utente - Nome_utente - Password_utente -

    In php controlliamo che i dati inseriti dall'utente esistano a database, se ci sono allora è loggato, altrimenti no.

    Salviamo qualcosa nel cookie (sul client), in modo che la volta successiva non si debba di nuovo loggare.

    Opzione 2:

    Come la 1 senza i cookie.



    Da notare che sono stato molto generico... dovresti controllare bene tutti i campi dei form (onde evitare attacchi), dovresti poi aggiungere un campo con una password_salt che verrà poi messa nel cookie sul client, criptata ovviamente, mai mettere le password in chiaro, nemmeno sul database.

    Ci sono mille considerazione da fare... e non ho nemmeno finito con lo script di login del sistema... detto questo ribadisco, dipende molto da che cosa vuole il tuo cliente e da come vuoi fare il programma tu.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    43
    Dunque, il mio utente si logga ed entra.

    Ora lavoro nel seguente modo:

    Salvo alcune cose nelle session in questo modo, onde evitare di dover fare il login qualora dovesse eseguire un'operazione qualsiasi:

    Codice PHP:
    session_start();
    $sid session_id();
    $_SESSION['id'] = $user_id;
    $_SESSION['login'] = 1;
    $_SESSION['type_account'] = 1;
    $time time();

    if (
    $check_cookie) {
        
    setcookie("id","$partner_id",time()+2592000);

    Inoltre, le aggiungo al db con una query

    Codice PHP:
    $query "INSERT INTO `session` (sid, uid, expires, type) VALUES ('$sid', '$user_id', $time, '1')"
    Arrivato a questo punto, in cima ad ogni pagina aggiungo questo codice:

    Codice PHP:
    <?php

      session_start
    ();
      
      
    // Dichiaro variabili
      
    $time time();
      
    $cookie $_COOKIE['id'];
      
    $user_id $_SESSION['id'];
      
    $login $_SESSION['login'];
      
    $type_account $_SESSION['type_account'];
      
      if (isSet(
    $cookie)) { // C'è il cookie? Sì.
        
    if ($login == 1) { // Ho appena fatto il login? Sì.
            
    $query "UPDATE `session` SET expires = '$time' WHERE uid = '$cookie'";
            
    $db->query($query);
            
            
    $uid $user_id;
            
        } else { 
    // No, è un cookie vecchio visto che la scadenza è 30 giorni.
            
    $sid session_id();
            
    $uid $cookie;
        
            
    $query "INSERT INTO `session` (sid, uid, expires) VALUES ('$sid', '$uid', $time)";
            
    $db->query($query);
        }
      } else { 
    // Niente cookie.
        
    if ($login == 1) { // Ho, ugualmente, appena fatto il login? Sì.
            
    $query "UPDATE `session` SET expires = '$time' WHERE uid = '$user_id'";
            
    $db->query($query);
            
            
    $uid $user_id;
        }
      }
      
      
    $query "DELETE FROM `session` WHERE expires < $time AND uid = '$uid'";
      
    $db->query($query); 

    ?>
    Per poi prelevarle nella pagina così:
    Codice PHP:
    <?php if ($login != 1) {?>
    NO LOGIN
     <?php } else { ?>
    LOGIN <?php ?>
    Io ho pensato in questo modo. Che ne dici?

  4. #4
    ... tendo a non salvare niente a database delle sessioni, lascio gestire il tutto a php, sono sicuro che il mio provider di spazio web non ha la cartella sessioni condivise fra tutti i domini presenti su di un singolo server di loro proprietà, detto questo lascio la parola ad altri che lavorano in questo modo.

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.