Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885

    problema con sessioni scritte su db ... crescita esponenziale

    ciao a tutti , ho un problema con delle sessioni.
    Faccio in modo che le sessioni vengano registrate nel db criptate con md5 nel momento che un utente si registra .
    fin qui nulla di che , ma appena vado a vedere sul db noto che ha scritto un 15 di reghe , dopo qualche sec faccio un bel refresh e noto che sta continuando a scrivere nel db anche se lo script ormai non è più abilitato , il numero con cui sale è esponenziale , se faccio un bel truncate vengono ricaricati sempre esponenzialmente ... il fatto e che vengono caricati i dati anche se è tutto chiuso ....
    qualcuno sa dirmi come mai può succcedere una roba del genere?
    ciao ...
    premetto che per ora ho scritto solo session_start (); all'inizio delle mie pagine!

  2. #2
    evidentemente (probabilmente) registri tutto invece di verificare se l'id gia' esiste. In teoria dovresti scrivere il session_id se non esiste e aggiornare la dataora ultimo accesso ad ogni richiamo del session_start(). poi ripulire il garbage (monnezzaio) dai record scaduti.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    suppongo che tu abbia ragione , memorizzo il dato criptato della sessione...
    ma come si fa a riprendere il valore della sessione ? non viene generato sempre un id nuovo ad ogni accesso?

    codice:
    // se username e password esistono registro la sessione
                        if (($row_assoc['user_name'] == $_POST['user_name']) && ($row_assoc['password'] == $_POST['password'])) {
    // cancello le sessioni doppie
                           $sql_delete = "DELETE FROM sessions WHERE id_sess='{$id_sess}' OR UNIX_TIMESTAMP() - last_action = $_SESSIONS_VARS[gc_time];";
                           $query_delete = mysql_query($sql_delete);
    // nuovo id_sess criptata in md5
                            $id_sess = md5(uniqid(microtime()));
    // inserisco i nuovi dati
                            $sql_insert = "INSERT INTO sessions (id_sess, id_utente, ip, user_agent, last_action) VALUES ('$id_sess','{$row_assoc['id_utente']}','$ip_address','$user_agent',UNIX_TIMESTAMP());";
                            $query_insert = mysql_query($sql_insert) or die ("errore nell'inserimento della sessione " .mysql_error());
                            // inserisco i dati nello storico
                            $sql_stor = "INSERT INTO storico (id_sess, id_utente, denominazione, ip, user_agent, last_action, login) VALUES ('$id_sess','{$row_assoc['id_utente']}','{$row_assoc['denominazione']}','$ip_address','$user_agent',UNIX_TIMESTAMP(NOW()), '$date_time');";
                            $query_stor = mysql_query($sql_stor) or die ("errore inserimento storico " .mysql_error());;
                            // aggiorno i dati nella tabella utenti
                            $sql_update = "UPDATE utenti SET last_login = '$date_time' WHERE id_utente = '$id_user';";
                            $query_update = mysql_query ($sql_update) or die ("impossibile aggiornare orario di accesso " .mysql_error());;
                            // registro il biscottino
                            setcookie("s", $id_sess);
                            $_GET['s'] = $id_sess;
                     //indirizzo alla pagina principale
                     header("Location:inserimento_deb.php?id_user=$id_user");

  4. #4
    ne avevamo gia' parlato:

    http://forum.html.it/forum/showthrea...readid=1356757

    delle due una: o usi le sessioni del php oppure gestisci tu le cose lasciando stare le funzioni preposte alle sessioni del php.

    Alternativa: fai il mixer tra le sessioni gestite dal php e le tue, ma per fare cio' devi avere ben chiaro come lavorano le sessioni del php ed avere ben chiaro lo scopo che vuoi raggiungere.

    session_start() per prima cosa controlla se esiste un cookie di sessione sul browser, se esiste verifica se ha tra i file di sessione il suo corrispondente, se esiste lo rende disponibile allo script, se non esiste crea un nuovo id di sessione e lo invia al browser creando nel contempo una struttura vuota di file di sessione con lo stesso valore di hash rilasciato al cookie.

    E qui si entra nel giro buffo della sessione: esiste il cookie valido? esiste il file di sesione corrispondente non scaduto? se si, si dia inizio alle danze.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

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.