Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 26
  1. #11
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Il fatto di passarsi via get la lingua non è legato al metodo che ti ho proposto, diciamo che è una cosa in più.

    Forse ti ho confuso con i due link proposti, che comunque non sono 2 pagine, ma sono il risultato che puoi ottenere usando l'url rewrite, che ti permette di trasformare un link cosi:

    codice:
    http://www.sito.com/index.php?lang=it&module=module1&title=Questa-è-una-prova
    in

    codice:
    http://www.sito.com/it/module1/Questa-è-una-prova/
    Se puoi/sai usare l'url rewriting, avrai il vantaggio passandoti la lingua in get di poter fornire un link "bello" che permetta all'utente di arrivare direttamente alla versione lingua che vuole.

    Ecco perchè passarsi la lingua in get può essere un vantaggio, perchè se un tuo utente fornisce un link del tuo sito ad un altra persona che non ha mai visitato il tuo sito quando entra non avrà nè un cookie che indica la lingua preferita, nè una sessione attiva. A questo punto i casi sono 2:

    1. Hai gestito bene il cambio lingua e quando scegli la lingua rimandi l'utente all'articolo che aveva richiesto con il link
    2. L'utente finisce in home con la lingua corretta perdendo il link dell'articolo.

    In ognuno dei 2 casi c'è la possibilità che obblighi l'utente a fare un click (o più) per arrivare al link che aveva digitato.

    Tieni ben presente che queste sono "menate" in più, nel senso che il sito funzionerebbe lo stesso senza tutto sto ragionamento, ma allo stesso tempo queste sono cose che fanno un po' la differenza anceh per quanto riguarda i motori di ricerca.

    Ciao

  2. #12
    gianiaz, questa cosa dell'url rewrite mi interessa moltissimo, è una funzionalità di Apache?

    scusa le domande stupide ma non l'ho mai usata, non vorrei abusare della tua pazienza:

    1. Il sito è su piattaforma LAMP, basta Apache per poter utilizzare url rewrite?

    2. Ad ogni modo per poterlo utilizzare mi sembra di capire che serve comunque che ogni link passi il parametro lingua, mi sbaglio?

    3. Una volta che il mio url diventa www.sito.com/it/questa-è-una-prova, la pagina in italiano deve trovarsi nella sottodirectory it/ ?

    Non mi dire nemmeno che sono "menate", cerco di essere preciso sempre e di sviluppare nel modo migliore che conosco! (grazie delle cose che mi stai insegnando)

    E.

  3. #13
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da brucomela
    gianiaz, questa cosa dell'url rewrite mi interessa moltissimo, è una funzionalità di Apache?

    scusa le domande stupide ma non l'ho mai usata, non vorrei abusare della tua pazienza:

    1. Il sito è su piattaforma LAMP, basta Apache per poter utilizzare url rewrite?
    L'url rewriting è possibile grazie ad un modulo di apache chiamato mod_rewrite, che in genere in quasi tutti gli hosting trovi attivato, inoltre devi poter utilizzare i file .htaccess, e anche questo dipende dalla configurazione di apache.

    Se vuoi fare una prova immediata crea una pagina modrewrite.php in cui ci metti:

    codice:
    <?php
    echo '-'.$_GET['id'].'-';
    ?>
    poi crei un file .htaccess in cui inserisci queste 2 righe:

    codice:
    RewriteEngine On
    RewriteRule ^(modrewrite)/([\d]+)/ $1.php?id=$2[L]
    metti tutti e 2 questi file nella root del sito e chiami:

    e a video dovresti vedere il risultato che otterresti chiamando:


    2. Ad ogni modo per poterlo utilizzare mi sembra di capire che serve comunque che ogni link passi il parametro lingua, mi sbaglio?
    no, il punto è che il mod_rewrite traduce un url attraverso un espressione regolare (la seconda linea del file .htaccess), in quello che vuoi tu, rendendo un url con tanti parametri in GET in qualcosa di più bello da vedere.

    3. Una volta che il mio url diventa www.sito.com/it/questa-è-una-prova, la pagina in italiano deve trovarsi nella sottodirectory it/ ?
    Se hai capito l'esempio sopra, sarai arrivato da solo alla risposta, comunque no...


  4. #14
    ciao Gianiaz, scusa ma avevo modificato il mio post dopo aver trovato qualche risposta su url rewrite...mi sto facendo una cultura grazie a te...ora devo imparare qualcosa di regexp.

    Ad ogni modo credo si tratti di un passo in più, finalizzato soprattutto all'ottimizzazione per i motori.

    Per il mio problema iniziale, io direi che la soluzione alla fine sarà combinare Session, Cookie, e get per cambiare lingua. Eventualmente anche la lingua del browser ma forse complica e basta.

    L'unico mio dubbio è quello sul timeout di una sessione...se non scadesse sarei a posto...

  5. #15
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Bhe la sessione scade se chiudi il browser oppure dopo un certo tempo di inattività, quindi svolge a pieno la sua finalità , ecco perchè poi si usano i cookie per altre finalità (come ricordare la lingua scelta in una precedente sessione).

    ciao

  6. #16
    Bhe la sessione scade se chiudi il browser oppure dopo un certo tempo di inattività, quindi svolge a pieno la sua finalità , ecco perchè poi si usano i cookie per altre finalità (come ricordare la lingua scelta in una precedente sessione).
    Chiaro, ma il mio problema (e devo preoccuparmi di ogni possibilità) è l'utente che resta inattivo e non ha i cookie abilitati...

  7. #17
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    e qui entra in gioco il get, e comunque pensa che chi non ha i cookie nella maggior parte dei server non ha un cookie di sessione, e quindi non lavora nemmeno con le sessioni, a meno che non invii l'id di sessione via get.

    ciao

  8. #18
    domanda forse azzardata:

    a questo punto però se uso GET, a che servono cookie e session? al massimo giusto i cookie nella homepage!

    mi sbaglio?

    Nel mio sogno session e cookie sostituiscono la get, ma c'è il problema di timeout e cookie non settati...e anche nel tuo esempio la GET viene prima (inevitabilmente, se no come cambio lingua!).

    Quindi alla fine devo mettere in tutti i link il parametro lingua, ed eventualmente fare url rewriting...

    saiche speravo in una soluzione più pulita (se sono talmente scemo che non ho capito quello che mi vuoi dire, perdonami in anticipo!)

  9. #19
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Ti dico come fare se volessi arrivare al risultato che hai chiesto.

    Innanzitutto nei miei siti lavoro con una sola index.php che richiama diversi moduli, quindi il discorso della scelta lingua lo metterei o direttamente nella pagina index.php o in un file che comunque includo ovunque.

    I requisiti che chiedi sono:

    1. Non passare via get la lingua se non per cambiarla
    2. Ricordare la lingua dell'utente nelle visite successive

    Procediamo quindi cercando la lingua secondo questa priorità

    1. GET
    2. COOKIE
    3. SESSION (si potrebbe evitare ma facciamo finta che tu poi passerai l'id di sessione per essere sicuro che le sessioni funzionino anche per quei browser che non autorizzano i cookie).


    Quindi

    codice:
    // lingue implementate sul sito
    $lingue_sito = array('it', 'en');
    if(isset($_GET['lang']) && in_array($_GET['lang'], $lingue_sito)) {
      $lang = $_GET['lang'];
    } elseif(isset($_COOKIE['lang']) && in_array($_COOKIE['lang'], $lingue_sito)) {
      $lang = $_COOKIE['lang'];
    } elseif(isset($_SESSION['lang']) && in_array($_SESSION['lang'], $lingue_sito)) {
      $lang = $_SESSION['lang'];
    } else {
      $lang = 'it';
    }
    
    // ora sono sicuro che $lang contiene una sigla valida in ogni caso contemplabile, quindi la 
    // uso per farne ciò che voglio, comporre i link nel caso voglia passarmela via get, usarla per 
    // comporre percorsi per caricare i files necessari e settare cookie e valore in sessione per le 
    // future navigazioni, quindi:
    
    $_SESSION['cookie'] = $lang;
    setcookie('lang', $lang, time()+(30*24*3600)); // cookie con durata di 30 giorni
    In pratica abbiamo contemplato i casi in cui:

    1. L'utente visita per la prima volta il tuo sito, e non passa nulla via get (ricade nell'ultimo else)
    2. L'utente ha già visitato il tuo sito 10 giorni fa ma non permette il settaggio dei cookie (ricade nell'ultimo else)
    3. L'utente ha già visitato il tuo sito 10 giorni fa e permette i cookie (primo elseif)
    4. L'utente sta navigando il tuo sito, non permette il settaggio dei cookie, ma tu stai passando via get l'id di sessione, e lo usi per recuperare ogni volta la sessione dell'utente (secondo elseif)

  10. #20
    gianiaz se sei da queste parti ti devo pagare da bere, la birra è già tua!

    Io però voglio ancora romperti le scatole perchè per me c'è un possibile buco in questa impostazione:

    I requisiti che chiedi sono:

    1. Non passare via get la lingua se non per cambiarla
    2. Ricordare la lingua dell'utente nelle visite successive
    Proprio così!
    Vediamo però i casi:


    1. L'utente visita per la prima volta il tuo sito, e non passa nulla via get (ricade nell'ultimo else)
    2. L'utente ha già visitato il tuo sito 10 giorni fa ma non permette il settaggio dei cookie (ricade nell'ultimo else)
    3. L'utente ha già visitato il tuo sito 10 giorni fa e permette i cookie (primo elseif)
    4. L'utente sta navigando il tuo sito, non permette il settaggio dei cookie, ma tu stai passando via get l'id di sessione, e lo usi per recuperare ogni volta la sessione dell'utente (secondo elseif)
    Ok per i primi 3 punti, il tuo codice è chiaro e anch'io vorrei procedere così.
    Ma il mio problema è col caso 4: poniamo che l'utente non consenta il settaggio dei cookie e che la sessione sia scaduta per inattività, non ho la GET perchè come dici tu la uso solo se cambia lingua (e qui fingiamo di essere nel mezzo della navigazione). Secondo me rischio che quando l'utente clicca un link, finisce nell'ultimo else (=IT) anche se la sua lingua era un'altra: mi sbaglio?

    Sta diventando quasi un gioco oltre che spero una cosa utile, spero davvero di non sembrarti insistente e di non farti perdere tempo!

    Grazie

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 © 2026 vBulletin Solutions, Inc. All rights reserved.