Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    register_globals = off e $_SESSION

    Ciao a tutti.

    Mi rendo conto che è una questione che si è sollevata non so quanti anni fa, ma forse, proprio per questo, non riesco a trovare una soluzione sul forum.

    Il problema è che, essendo passato il server a PHP 5, i miei vecchissimi script in php hanno smesso di funzionare. Ora, poiché prima di riscrivere tutto mi ci vorrà parecchio tempo, per far andare la baracca avevo pensato di inizializzare le variabili in ogni pagina passando per i vari $_<nome array>

    Nel sito che mi sta dando problemi, il codice iniziale della pagina è:

    Codice PHP:
    <?PHP session_start(); ?>
    <?PHP
       
    if (isset($_GET) && count($_GET) > 0) foreach ($_GET as $key => $value) $$key $value;
       if (isset(
    $_POST) && count($_POST) > 0) foreach ($_POST as $key => $value) $$key $value;
       if (isset(
    $_SESSION) && count($_SESSION) > 0) foreach ($_SESSION as $key => $value) $$key $value;
    ?>
    Per $_GET e $_POST tutto sembra funzionare per il meglio; è $_SESSION il problema, perché sembra che le variabili di sessione con questa procedura non vengano inizializzate. Mi sembra di ricordare che $_SESSION è un array di array e, se così fosse, allora la sintassi del comando riportato sopra sarebbe sicuramente sbagliata, perché dovrei usare qualcosa tipo:

    Codice PHP:
       if (isset($_SESSION[<valore>]) && count($_SESSION[<valore>]) > 0) foreach ($_SESSION[<valore>] as $key => $value) $$key $value
    È corretto quello che ho scritto? Se è corretto, qual'è il valore in questione? Perché io sto macinando prove ma non ne vengo fuori. :master:

    O magari non è quello il problema ma qualcos'altro?

    Grazie a tutti per l'aiuto.

  2. #2

    Risolto!

    Mi spiace di aver aperto un 3d per nulla, ma alla fine, prova e riprova, sono riuscito a risolvere il problema.

    A beneficio di quanti leggeranno e non lo sapessero già, spiego l'inghippo.

    Non era la procedura di inizializzazione delle variabili presenti nei 3 array $_GET, $_POST e $_SESSION a essere sbagliata.

    Il problema, relativo al solo array $_SESSION, era che, se si intende usare quell'array per gestire le variabili di sessione, queste ultime non possono essere inizializzate mediante la funzione session_register() ma DEVONO essere inizializzate direttamente nell'array, ossia:

    Codice PHP:
    session_register('<nome variabile>');
    $<
    nome variabile> = <valore variabile>; // sbagliato

    $_SESSION['<nome variabile>'] = <valore variabile>; // corretto 
    È da tenere presente che questo comportamento si ha con la variabile register_globals = off. Se invece la variabile è uguale a on, allora l'array $_SESSION viene riempito anche usando la funzione session_register().

    Bons, nella speranza che questo possa essere d'aiuto anche ad altri, do la buona notte a tutti!

  3. #3
    molto gentile.... ma e' un problema nato nel 2002....

    a suo tempo una pillola di chris in merito ...

    http://forum.html.it/forum/showthrea...hreadid=245215

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

  4. #4
    Ciao piero.mac.

    L'avevo trovato quel 3d, proprio segnalato da te in un altro 3d sul quale ero approdato in cerca di info, ma poiché nelle prime 3 pagine non ho letto nulla riguardo alla risoluzione del mio problema, bè, l'avevo mollato. Ora me lo sono guardato a modino per scrupolo e ovviamente hai ragione: alla pagina 10 si menziona 'sta benedetta session_register()!

    Chiedo di nuovo scusa, ma ieri notte di arrivare alla pagina 10 non ce l'ho fatta. *sigh*

    Ho risolto cercando e ricercando sulla documentazione on line e provando.

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.