Pagina 9 di 20 primaprima ... 7 8 9 10 11 19 ... ultimoultimo
Visualizzazione dei risultati da 81 a 90 su 198

Discussione: [PILLOLA] sessioni

  1. #81
    Originariamente inviato da Archim3de
    ... praticamente ho capito ke se imposto il tempo di expire dei cookies x il mio sito, la sessione dovrebbe terminare entro quel tempo dall'ultima rikiesta al server web... giusto?
    Inizialmente credevo anch'io che i cookies venissero rinnovati di volta in volta, invece no: se imposti come durata di default del cookie 30 secondi, la sessione durerà comunque al massimo 30 secondi anche se non fai pause nella navigazione. Conclusione: si perde la sessione.
    Invece i files sul server, dureranno il tempo stabilito nel php.ini ma hanno soltanto un x% di probabilità di essere eliminati.

    Provo a riassumere questo "casino"

    1) I file di sessione sul server vengono rinnovati ad ogni accesso purchè questo avvenga entro il tempo fissato in session.gc_maxlifetime MA potrebbero non venire eliminati mai anche se scaduti (dipende dalla probabilità in session.gc_probability), quindi indovinando l'id di sessione (oppure salvandolo tra i preferiti nell'url della pagina)la sessione potrebbe risultare eterna.

    2) Se sono temporanei (session.cookie_lifetime=0) i cookies
    mantengono il collegamento con la sessione fino alla chiusura della finestra del browser invece, se hanno una scadenza precisa, solo fino alla scadenza (che non viene rinnovata di volta in volta).
    Se proprio li vuoi rinnovare, prima che scadano, forse lo puoi fare "manualmente" ma non ho provato...
    <?

    $si= session_id() ;
    $scadenza= 600 ; //10 minuti in secondi
    setcookie ("PHPSESSID",$si,time()+ $scadenza);

    ?>
    per favore NIENTE PVT TECNICI da sconosciuti

  2. #82
    Originariamente inviato da chris
    si parla di una pillola e io dovrei starmene zitto?

    c'è un metodo alternativo per utilizzare le sessioni: non utilizzare session_register();

    se usate una versione del php 4.0.x potete creare le sessioni in questo modo:

    <?php
    session_start();

    $HTTP_SESSION_VARS['nome_variabile'] = "valore della variabile";

    echo $HTTP_SESSION_VARS['nome_variabile'];
    ?>

    mentre per una versione 4.1.x o 4.2.x
    <?php
    session_start();

    $_SESSION['nome_variabile'] = "valore della variabile";

    echo $_SESSION['nome_variabile'];
    ?>

    come si può vedere dagli esempi dunque si utilizza session_start() ma non session_register()

    per maggiori informazioni www.php.net/session_register

    Perchè non mi funzionano le sessioni?
    Premetto che ho installato PHP Version 4.0.6 su server apache in locale, ma non ho installato
    database... dipende da quello? Devo per forza installare il database?

    a questo codice:
    <?php
    session_start();

    $HTTP_SESSION_VARS['nome'] = "mackey";

    echo "1) ".$HTTP_SESSION_VARS['nome']."
    2) $nome";
    ?>

    mi da questo output di errore:
    Warning: open(/tmp\sess_c938bb397fcdc3ebdd16a3795e12325c, O_RDWR) failed: m (2) in c:\programmi\apache group\apache\test\sessioni\sessioni1.php on line 2
    1) mackey
    2)

    Sto imparando a usare le sessioni, perdonatemi. Mi hanno detto che sono molto utili per la
    gestione di un'area privata... chi mi può fare un esempio?
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  3. #83
    Ti manca la directory in cui salvare i files di sessione, devi aprire il php.ini, cercare la zona dedicata alle sessioni e su
    session.save_path = /tmp
    (si scrive così?) indicare una directory che sia esterna alla root del webserver.
    Es. C:\windows\temp può andare bene
    per favore NIENTE PVT TECNICI da sconosciuti

  4. #84
    ; Handler used to store/retrieve data.
    session.save_handler = files

    ; Argument passed to save_handler. In the case of files, this is the path
    ; where data files are stored.
    session.save_path = C:\WINDOWS\TEMP

    ; Whether to use cookies.
    session.use_cookies = 1


    ; Name of the session (used as cookie name).
    session.name = PHPSESSID

    ; Initialize session on request startup.
    session.auto_start = 0

    ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
    session.cookie_lifetime = 0

    ; The path for which the cookie is valid.
    session.cookie_path = /

    ; The domain for which the cookie is valid.
    session.cookie_domain =

    ; Handler used to serialize data. php is the standard serializer of PHP.
    session.serialize_handler = php

    ; Percentual probability that the 'garbage collection' process is started
    ; on every session initialization.
    session.gc_probability = 1

    ; After this number of seconds, stored data will be seen as 'garbage' and
    ; cleaned up by the garbage collection process.
    session.gc_maxlifetime = 1440

    ; Check HTTP Referer to invalidate externally stored URLs containing ids.
    session.referer_check =

    ; How many bytes to read from the file.
    session.entropy_length = 0

    ; Specified here to create the session id.
    session.entropy_file =

    ;session.entropy_length = 16

    ;session.entropy_file = /dev/urandom

    ; Set to {nocache,private,public} to determine HTTP caching aspects.
    session.cache_limiter = nocache

    ; Document expires after n minutes.
    session.cache_expire = 180

    ; use transient sid support if enabled by compiling with --enable-trans-sid.
    session.use_trans_sid = 1

    url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeent ry"



    GRAZIE Fabio.. mi controlli se va bene il resto?
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  5. #85
    Mi sembra di sì...poi dipende da quali impostazioni preferisci inserire tu.

    C:\WINDOWS\TEMP è un percorso valido sul tuo PC vero?
    per favore NIENTE PVT TECNICI da sconosciuti

  6. #86
    validissimo.

    ; The path for which the cookie is valid.
    session.cookie_path = /

    non è che qui devo scrivere C:\WINDOWS\COOKIES ?

    e le altre variabili?
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  7. #87
    Puoi usare una directory a piacere (meglio non una con i file di sistema), purchè esterna allo spazio WEB, altrimenti chiunque può grabbare le sessioni accedendo con il browser. Ovviamente in locale non hai problemi
    per favore NIENTE PVT TECNICI da sconosciuti

  8. #88
    Originariamente inviato da Fabio Heller
    purchè esterna allo spazio WEB
    sullo spazio web come esterna?
    per ora le provo in locale... penso che sul dominio sia gia impostato tutto... ma che vuol dire esterna??? intendi sul server proprio... nel caso io avessi un housing?
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

  9. #89
    Significa una directory non raggiungibile da Apache (via GET, POST etc.) ma solo da Php. Non serve essere in housing, alcuni hoster ti permettono di tenere una directory esterna alla root per i file da includere e altre cosucce.
    Comunque chiunque ti fornisca uno spazio WEB ha certamente già pensato a mettere i files di sessione al sicuro
    per favore NIENTE PVT TECNICI da sconosciuti

  10. #90
    si infatti... hai ragione tu.

    C'è una cosa che non riesco a capire:
    Se ho due utenti che si connettono allo stesso momento alla mia area privata con userid e
    password diversi chi arriva dopo ovvero il secondo, perchè mettiamo che non siano sincronizzati
    proprio nello stesso momento, trovera gia la sessione aperta e potrà accedere senza digitare
    userid e password... vi faccio un esempio di script:

    Codice PHP:
    <? 

    $webroot 
    ="http://miosito.it/areapvt/";


    $toppage="top.ihtml";


    session_start();

    if(!isset(
    $auth)){    // Se non è stata precedentemente aperta nessuna sessione e $auth non esiste
        
    $auth=array();
        
    session_register("auth");    // registra $auth
    }

    if(
    $page == "logout"){    // se $page=logout ovvero l'utente si è disconnesso
        
    $auth['userid']="";    // cancella $userid
        
    $auth['login']="";    // cancella $login
        
    header("Location: $webroot");    // vai a $webroot

    }
    if(
    $auth['login']){        // Se invece l'utente è login
        
    $homepage=$login;

        if(!
    $page){    // Se non esiste $page imposta la pagina iniziale
            
    $homepage=$toppage;                
        }else{            
    // altrimenti sarà page.ihtml
            
    $homepage="$page".".ihtml";
        }
        require(
    "$homepage");    // include la pagina impostata

    }else{                // Se invece l'utente non risulta login
        
    $homepage=$login;
    session_start();

    if(
    $check){        // Se è stato inviato il form $check è =1
        
    if(!$userid){        // Segnala se non è stato inserito l'userid
            
    $erry="nessun userid";
            print 
    "<center>$erry</center>";
        }else{        
    // Se invece è stato inserito
            
    $fp fopen("user.txt","r");
                while(
    $userinfo fscanf($fp,"%s\t%s\t%si\n")){        // legge il file degli utenti
                    
    list($id,$name,$pass)=$userinfo;
                    if(
    $name  == $userid && $pass == $password){    // controlla che userid e password corrispondono
                        
    $auth['userid']=$userid;    // imposta $auth->userid
                        
    $auth['login']=1;    // dice che l'userid è connesso
                        
    session_register("auth");
                        
    header("Location: $webroot");    // va a webroot
                                
                    
    }
                }
            }
    }
        
        
    include(
    "login.ihtml");        // se non va a webroot includerà login.ihtml
    }
        

    ?>
    Ho testato che il secondo utente arriva nell'area privata e non trova il form da compilare, ma si trova gia connesso...
    com'è possibile evitarlo??? Premetto che questa volta non voglio usare i cookies.
    Sto imparando scusatemi... le sessioni non sono il mio forte. :bubu:
    «Se leggi dimentichi, se vedi capisci, se fai impari» Piaget

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.