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

    [php] problema fastidioso con le sessioni

    ciao,

    vorrei un consiglio su delle pagine multilingua.
    in pratica quando accedo alla index del sito, lo script controlla il tipo di lingua impostata nel browser e passa atuomaticamente l'informazione alle sessioni che mi caricano le variabili a seconda della lingua. stessa cosa succede quando decido di modificare manualmente la lingua ( link dalle classiche bandierine ).
    La cosa fastidiosa è che se accedo al sito attraverso pagine che non è l'index, oppure le sessioni sono scadute, mi escono per circa 2-3 secondi tutta una serie di warning perchè tutte le variabili per la lingua non sono settate, prima di essere rediretto all'index e quindi risettare il tutto.
    domanda, è possibile evitare questo fastidioso inconveniente?

    index:

    Codice PHP:
    <?php

    $default 
    'home.php?lingua=en&page=main';

    $redirect = array(  'it' => 'home.php?lingua=it&page=main',
                             
    'fr' => 'home.php?lingua=fr&page=main',
                             
    'en' => 'home.php?lingua=en&page=main', );

    // get the language string proposed by the browser if there is one

    function lang_from_browser() {

         
    $lang_list $_SERVER['HTTP_ACCEPT_LANGUAGE'];
           
    $lang_block explode(','$lang_list);
            
    $lang_ar = array();

        foreach (
    $lang_block as $t) {

            
    array_push($lang_arstrtolower(substr(trim($t), 0,2)));

        }

            return 
    $lang_ar;

    }

    // redirect to the browser language if there is one

    function redirect($lang){

        global 
    $redirect;

        if(
    count($lang) > 0){

          foreach(
    $lang as $l){

              if(
    array_key_exists($l,$redirect)){

                  
    header('Location: '.$redirect[$l]);

                  die();

              }
           }
        }

        return 
    true;
    }

    ## redirect ##

    if(redirect(lang_from_browser())){

        
    header('Location: '.$default);

        die();

    }

    ?>
    mentre le sessioni:

    Codice PHP:
    <?php
    // Avvia la sessione
    session_start();

    ini_set('arg_separator.output''&amp;');

    // SETTAGGIO SESSIONI PER LA LINGUA

    if(isSet($_GET['lingua'])){
    $_SESSION['lingua'] = $_GET['lingua'];
    }

    $menu "lang/".$_SESSION['lingua']."/".$_SESSION['lingua']."_header.php";
    $scheda "lang/".$_SESSION['lingua']."/".$_SESSION['lingua']."_scheda.php";
    $varie "lang/".$_SESSION['lingua']."/".$_SESSION['lingua']."_varie.php";
    $checkout "lang/".$_SESSION['lingua']."/".$_SESSION['lingua']."_checkout.php";

    ?>
    grazie

  2. #2
    se fai così?
    Codice PHP:
    if(isSet($_GET['lingua'])){
    $_SESSION['lingua'] = $_GET['lingua'];


    if(!isset(
    $_SESSION["lingua"])){
     
    //Setto una lingua di default
     
    $_SESSION["lingua"]=DEFAULT;
    }

    //... 
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

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.