Visualizzazione risultati 1 fino 6 di 6

Discussione: [PHP]Sessions Language

  1. #1
    Guest

    Arrow [PHP]Sessions Language

    Ho bisogno di conservare una variabile di sessione per il linguaggio più volte.

    <?
    session_start(); //Faccio Partire la sessione
    if (!isset ($_SESSION["l"])) { //Guardo se la variabile è impostata
    unset ($_SESSION["l"]);
    $l = $_GET['l']; //Raccolgo i dati get
    session_register(l); //Salvo la sessione
    }else{ //Se ricarico la pagina e la sessione è gia settata

    $l = $_SESSION["l"]; //La sessione salvata

    }
    ?>

    Con questo script la variabile di linguaggio può essere salvata solo una volta,io vorrei risalvarla.

    In parole pover ho un sito multilingua in cui voglio che venga selezionata la lingua e la scelta venga salvata con le sessioni,ma voglio pure che questa variabile venga cambiata ogni qualvolta l'utente cambia lingua.

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Non è che abbia molto capito, ma credo che basti mettere il codice che hai postato in tutte le pagine.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Citazione Originalmente inviato da svacant
    <?
    session_start(); //Faccio Partire la sessione
    if (!isset ($_SESSION["l"])) { //Guardo se la variabile è impostata
    unset ($_SESSION["l"]);
    $l = $_GET['l']; //Raccolgo i dati get
    session_register(l); //Salvo la sessione
    }else{ //Se ricarico la pagina e la sessione è gia settata
    $l = $_SESSION["l"]; //La sessione salvata
    }
    ?>
    Ho segnato in blu, non proprio un errore ma una cosa curiosa, se non è settata a cosa serve farne l'unset?

    Invece il problema è segnato in rosso:
    prima di tutto sempre meglio scrivere gli elementi in stringhe (anche se php spesso riesce a risolverli ugualmente) dunque farei:
    session_register('l');
    tra apici.
    Poi in questo modo non ti tieni affatto il valore della variabile $l in sessione..
    prepari sì col register la variabile in sessione ma devi metterci il valore di $l (quando te lo passano in GET), dunque farei subito sotto al register:
    session_register('l');
    $_SESSION["l"] = $l;

    Così dovrebbe andare, fammi sapere.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  4. #4
    Guest

    Post Il mio problema non è questo

    Il mio problema non è questo,perchè la sessione la registra tranquillamente.

    Es:

    index.php?l=eng // Mando un get del'info da salvare nella sessione

    index.php // Se navigo senza rimandare un'altra volta i dati della sessione,la sessione rimane salvata.

    index.php?l=it // Mando un'altro get dell'info da salvare nella sessione e quindi voglio che venga riscritta.

    index.php // Continuo a navigare tranquillamente e se voglio ricambiare lo faccio mandando un get.

  5. #5
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Infatti, non mi ricordavo bene che session_register la registra automaticamente cercando una variabile $ con quel nome (anche se io userei comunque gli apici, come indicato nel manuale e come consigliato sopra).
    Ad ogni modo, come potrai leggere cercando sul web, molti evitano di usare il session_register, usando semplicemente l'array $_SESSION .

    Dunque, per sovrascrivere la lingua (passata in get), ovviamente ti manca un terzo caso, in cui pur trovando la variabile in sessione non usi quella in presenza di un valore nuovo passato in GET.
    Rielaborando più logicamente,
    1) prima di tutto controllo se mi si passa la lingua in get
    altrimenti
    2) se trovo in sessione la lingua la uso
    altrimenti
    3) uso una lingua di default (cosa che succederà al primo accesso al tuo sito no? nessuno ti passerà subito qualcosa in get dunque ci vuole un default).

    Dunque:

    Codice PHP:
    session_start(); //Faccio Partire la sessione
    if (isset($_GET['l'])){ //in ogni caso prevale il parametro get!
    $l = $_GET['l']; //Raccolgo i dati get
    $_SESSION['l'] = $l; //Salvo la sessione
    }else if (isset($_SESSION['l'])){ //Guardo se la variabile è impostata
    $l = $_SESSION['l']; //recupero da sessione
    }else{ //Se ricarico la pagina e la sessione è gia settata
    $l = 'it'; //se non trovo nulla uso la lingua di default!
    }
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  6. #6
    Guest

    Predefinito

    Grazie mille,funziona perfettamente.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •