Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di C232
    Registrato dal
    Dec 2004
    Messaggi
    303

    Anomalia con la funzione session_set_cookie_params

    Salve a tutti, ho trovato una piccola anomalia con la funzione "session_set_cookie_params" di PHP mentre stavo programmando. Praticamente se io imposto il cookie PHPSESSID con un lifetime ad esempio 3600 con questa funzione funziona (che gioco di parole) e su Mozilla FireFox non ci sono problemi invece con MSIE come al solito si!
    Facciamo alcuni esempi.

    Prendete questo file e copiatelo sul vostro server, chiamatelo come volete:

    codice:
    <?php
    // prima.php
    
    session_start(); // inizio la sessione
    session_set_cookie_params(3600); // imposto un lifetime piu lungo
    session_register("var"); // registro la var
    $_SESSION["var"]="variabile"; // setto la var
    print($_SESSION["var"]); // la stampo
    print("
    ");
    print($_COOKIE["PHPSESSID"]); // stampa l'id di sessione
    print("
    ");
    print_r(session_get_cookie_params()); // ottengo le conf. del cookie PHPSESSID
    ?>
    Ora chiudete il browser (è necessario), copiatevi quest'altro file e richiamatelo

    codice:
    <?php
    // seconda.php
    session_start(); // inizio la sessione
    print($_COOKIE["PHPSESSID"]); // stampo l'id sessione
    print("
    ");
    print($_SESSION["var"]); // stampo la var
    ?>
    Se usate Mozilla richiamando la prima pagina, chiudendo il browser e riaprendo la seconda pagina si puo leggere l'id di sessione e il valore della variabile di sessione. Facendo lo stesso processo con MSIE nella seconda pagina non si vede niente almeno a me cosi capita!

    Ho risolto cosi:
    codice:
    <?php
    // prima.php
    
    session_start();
    setcookie("PHPSESSID", session_id(), time()+3600); // setto il cookie manualmente
    session_register("var");
    $_SESSION["var"]="variabile";
    print($_SESSION["var"]);
    print("
    ");
    print($_COOKIE["PHPSESSID"]);
    print("
    ");
    print_r(session_get_cookie_params());
    ?>
    Poi
    codice:
    <?php
    // seconda.php
    
    session_start();
    print($_COOKIE["PHPSESSID"]);
    print("
    ");
    print($_SESSION["var"]);
    ?>
    Sarà quache mancato supporto di MSIE per quanto riguarda il protocollo HTTP?
    Nel senso che la sintassi usata per settare quel cookie non è valida per MSIE? :master:
    Va bene il codice creato da me in sostituzione? Perche io non so come lavora la funzioni session!
    C/C++

  2. #2
    ma le sessioni in teoria non dovrebbero scadere una volta chiusa la finestra?
    Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi! (A.Einstein)

  3. #3
    Utente di HTML.it L'avatar di C232
    Registrato dal
    Dec 2004
    Messaggi
    303

    ...

    si, ma usando la funzione session_set_cookie_params puoi prolungare il tempo di conservazione dell'id della sessione
    C/C++

  4. #4
    L'uso di $_SESSION (o $HTTP_SESSION_VARS con PHP 4.0.6 o precedente) è raccomandato per sicurezza e leegibilità del codice.Con $_SESSION o $HTTP_SESSION_VARS, non c'è bisogno di usare le funzioni session_register()/session_unregister()/session_is_registered(). Gli utenti possono accedere alla variabile di sessione come a una variabile normale.
    http://www.php.net/manual/it/ref.session.php


    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.