Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Sessione che scade

  1. #1

    Sessione che scade

    ciao, cortesemente chi volesse rispondermi. Ho il seguente codice per il controllo di sessione, ma non riesco a capire qual'e' la parte che indica quanti minuti puo' restare inattiva la sessione, in quanto dopo qualche minuto scade. Forse io non lo so e scade comunque ?

    grazie.

    alex.
    ---------------------------

    <?php
    //Avvio o continuo la sessione
    session_start();

    //Controllo che la sessione sia attiva
    if(!IsSet($_SESSION['logged'])){
    //Controllo se l' utente vuole loggarsi
    //Recupero i valori da una Form
    $username = @$_POST['txt_username'];
    $password = @$_POST['txt_password'];

    //Controllo se l' username e la password non sono vuoti
    if((!strlen($username) == 0) and (!strlen($password) == 0)){
    //Effettuo il controllo dei dati
    $strSQL = "SELECT * FROM tbl_users WHERE user_name = '".$username."'";
    $strSQL .= " AND user_pass = MD5('".$password."')";
    $result = mysql_query($strSQL);
    $row = mysql_fetch_row($result);
    //Controllo se l' utente e' stato trovato
    if(!strlen($row[0]) == 0){
    $myArray = array($row[0], $row[3]);


    //Effettuo il Login
    $_SESSION['logged'] = $myArray;

    }
    //Libero la memoria
    mysql_free_result($result);
    }
    }else{
    $timestamp =(date("Y-m-d"));
    $orastamp =(date("H:i:s"));

    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    $strSQL = "UPDATE tbl_users SET data_ultima ='$timestamp',ora_ultima ='$orastamp' ";
    $strSQL .= " WHERE user_id = ".$_SESSION['logged'][0];

    mysql_query($strSQL);
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    }

    if(@$_GET['logout'] == 1){ //Effettuo il Logout
    $_SESSION = array(); //Desetto tutte le variabili di sessione
    session_destroy(); //Distruggo le sessioni
    header( "Location: login.php" );
    }
    ?>
    </center>

  2. #2
    Utente di HTML.it L'avatar di skjobax
    Registrato dal
    Jan 2010
    Messaggi
    569
    Le sessioni hanno un id che viene inviato sottoforma di cookie (chiamato PHPSSID).
    Sapi che quel cookie ha una data di scadenza in minuti.

    Questo

    if(@$_GET['logout'] == 1){ //Effettuo il Logout
    $_SESSION = array(); //Desetto tutte le variabili di sessione
    session_destroy(); //Distruggo le sessioni
    header( "Location: login.php" );
    }
    ?>
    </center>
    non fa altro che eliminare il cookie.

    Se vuoi una sessione che dura più a lungo hai 2 possibilità:

    1) Modifica il php.ini
    2) Usa setcookie
    A volte la soluzione a un problema è sempre la più semplice...

  3. #3
    il php.ini no posso modificarlo perchè sono ostato da aruba, l'unica è lavorare con setcookie.
    Nella mia ignoranza da principiante.... Potresti farmi un esempio di come allungheresti il termpo di sessione usando il codice che ti ho postato ? grazie ancora.

  4. #4
    Ciao, puoi usare setcookie() così

    Codice PHP:
    <?php
    setcookie
    (session_name(), session_id(), 0);
    ?>
    Il primo parametro è il nome del cookie, il secondo è il valore, il terzo è la durata.
    Come nome gli puoi passare session_name() che restituisce il nome di default delle sessioni (di solito PHPSESSID), come valore session_id() che restituisce appunto l'id di sessione, mentre come scadenza gli devi passare la data di scadenza in formato Unix timestamp, cioè il numero di secondi trascorsi dalla cosiddetta 'epoch' (mezzanotte del 1° gennaio 1970). Quindi, se per esempio volessi farlo scadere il 31 ottobre, scriveresti
    Codice PHP:
    setcookie(session_name(), session_id(), 1320019200); 
    Se invece vuoi farlo scadere dopo un'ora, puoi usare la funzione time() e aggiungergli un'ora (=3600 secondi), così
    Codice PHP:
    setcookie(session_name(), session_id(), time()+3600); 
    Io di solito uso '0' che estende la durata fino alla chiusura del browser.

    Quando vuoi distruggere la sessione (e quindi il cookie PHPSESSID) puoi usare setcookie() e impostare semplicemente valore NULL
    Codice PHP:
    setcookie("PHPSESSID"NULL); 
    Ciao, spero di esserti stato di aiuto

  5. #5
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  6. #6
    di aiutissimo. grazie.

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.