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

    Gestione cookies per sito multilingua

    Buongiorno... io uso questo codice per gestire un sito bilingue (ita/eng):

    Questi link sono su tutte le pagine:
    Codice PHP:
    [url="?lang=ita"]Italiano[/url] | [url="?lang=eng"]English[/url
    Così come in tutte le pagine è presente questo codice:
    Codice PHP:
        if (isset($_COOKIE["lang"])) {
            
    $language $_COOKIE["lang"];
        } else {
            
    $language "ita";
        }    
        if (isset(
    $_GET['lang'])) {
            if (
    $_GET['lang'] == 'eng') {
                
    setcookie ("lang""eng"0"/");    
                
            } elseif (
    $_GET['lang'] == 'ita') {
                
    setcookie ("lang""ita"0"/");
                            
            }
            
    $language $_GET['lang'];
        } 
    Nelle singole pagine, effettuo controlli di questo tipo:
    Codice PHP:
    if (isset($_COOKIE["lang"])) { 
        
    $language $_COOKIE["lang"]; 
    } else { 
        
    $language 'ita'

    if (
    $language == 'ita') {
        
    fai questo
    } else {
        
    fai quest'altro

    Ora, il codice funziona, ma cosa succede? Che il cookie non è "attivo" fino al successivo caricamento della pagina. Cliccando su ENGLISH mentre sono sull'italiano, quindi, cambia il cookie, ma la lingua della pagina rimane la stessa fino a che non ricarico o cambio pagina.

    Per sopperire avevo pensato ad usare questo codice (uguale a prima, con le tre righe in più segnate dall'asterisco:
    Codice PHP:
    *$site $_SERVER['PHP_SELF'];
        if (isset(
    $_COOKIE["lang"])) {
            
    $language $_COOKIE["lang"];
        } else {
            
    $language "ita";
        }    
        if (isset(
    $_GET['lang'])) {
            if (
    $_GET['lang'] == 'eng') {
                
    setcookie ("lang""eng"0"/");    
                *
    header("Location: $site");
            } elseif (
    $_GET['lang'] == 'ita') {
                
    setcookie ("lang""ita"0"/");
                *
    header("Location: $site");              
            }
            
    $language $_GET['lang'];
        } 
    che mi permette di vedere immediatamente il cambio di lingua, dato che la pagina viene ricaricata via chiamata header.

    Il problema è qui: dato che sono in un ambiente CakePHP, la pagina che viene ricaricata è una generica index e non la view esatta su cui sto lavorando.

    Per farla breve: se io ho 3 pagine A, B e C e sono sulla pagina C in italiano, cliccando su inglese il sito switcha correttamente all'inglese, ma torna alla pagina A.

    Non ho trovato nulla che possa veramente aiutarmi, avete qualche consiglio?
    Come risolvereste voi il problema?
    Grazie ragazzi

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    passagli anche la pagina da cui proviene la richiesta di cambio lingua, così puoi tornare li

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.