Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di moomo
    Registrato dal
    Jul 2007
    Messaggi
    227

    Come Mantenere Aperta Una Sessione In Php?

    Ciao ragazzi,

    volevo chiedervi come fare per mantenere aperta la sessione di php in un login utente, volevo chiedervi qualche script o qualche manuale che spieghi come si faccia.

    per farvi un ulteriore chiarezza ad esempio quando si accede ad ebay nel proprio account, che sotto c"e" la casellina se si vuole mantenere aperta la connessione.

    cioe" quando si ritorna, non c"e" bisogno di fare di nuovo il login.

    penso che si debbano usare i cookie ma sinceramente non ne trovo script in rete per capire il funzionamento.

  2. #2
    certo, devi usare i cookies.

    quando un utente fa il login, lanci una sessione e scrivi un cookie con l'username dell'utente.
    quando ritorna, se c'è il cookie viene lanciata la sessione senza dover eseguire il login.
    questo molto semplicemente. In realtà il problema è un po' delicato, in quanto il cookie è un semplice file di testo, quindi bisogna fare in modo che non sia manipolabile, altrimenti è sufficiente che io scriva un username valido e potrò accedere a nome di quell'utente.

    per ovviare a questo problema il cookie deve contenere l'username e la password CRIPTATA.

    a questo punto quando viene letto il cookie verrà cercata una corrispondenza username password.

    Ti invio un esempio fatto da me, ma certamente si può trovare di meglio:

    Codice PHP:
    // Nel login
    // se l'username e la password immessi sono corretti


    {
        
    $valore $username ":" md5($password);
        
    setcookie("chiave_cookie"$valoretime() + 3456000);
        
    header("Location: index.php");
                
    }


    //funzione che controlla l'autenticazione

    function Grant()
    {
        
    session_start();
        if (
    $_SESSION['grant'] != "TRUE")
        {
            if (!isset(
    $_COOKIE['chiave_cookie']))
            {
                
    header("Location: login.php");
                exit;
            }
        
            
    $valori explode(":"$_COOKIE['chiave_cookie']);
            
    $sql "SELECT password FROM users WHERE username='$valori[0]'";
            include_once 
    "./lib/function_db.php";
            
    $res mysql_query($sql$conn);
            
    $row mysql_fetch_array($res);
            if (
    $valori[1] != md5($row['password']))
            {
                
    header("Location: login.php");
                exit;
            }
            else
            {
                
    $_SESSION['grant'] = "TRUE";
            }
        }


  3. #3
    Ciao.
    Forse credo che sia meglio mantenerne traccia nel DB, memorizzando l'ID di sessione, l'ultimo accesso (data-ora) e l'user_id e poi chiamare un metodo che ad ogni logout ripulisca la tabella secondo un determinato intervallo di tempo.
    I cookies rischiano di essere cancellati o per niente salvati.

  4. #4
    direi che c'è un attimino di confusione

    la sessione non va tenuta "aperta" perché è qualcosa di "stateless" ovvero senza stato

    la sessione va letta in base alle informazioni passate dal browser (il cookie PHPSESSID ad esempio se si usano le sessioni di php, o alternativamente il parametro GET con lo stesso onme) e quindi va usata

    può stare su file, su db, su cache (memcache, eaccelerator, apc ....)

    ma sono tutte cose separate

    i cookie servono per tracciare l'utente, ovvero associare la connessione del client (browser) ad una serie di informazioni (sessione)

    poi come la sessione venga implementata (db, file, cache) o la tracciatura venga gestita (cookie, query string) non ha importanza ... quello che conta è il concetto di fondo
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.