- Home
- Categorie
- Coding e Sistemistica
- PHP
- Redirect dalla home page, come lo imposto ?
-
Allora Michele, sai come vedere la provenienza dell'utente?
-
Ciao Michele,
Dai un'occhiata a questa classe: www.devpro.it/php4_id_89.html
penso faccia al caso tuo.
Facci sapere come risolvi.
-
Ciao, il modulo linkato permette di conoscere il paese di provenienza, ma come faccio poi a dare l'istruzione per il redirect ? Non esiste uno script già pronto ?
grazie
M.
-
Lo puoi fare in php, ti sposto nella sezione adatta.
-
Allora Michele, se hai XP nella barra delle applicazioni vedi (a destra) un IT che significa Italiano-Italia?
Bene, quello è recuperabile da php, anche se non hai XP e/o non lo vedi.
Ti faccio qualche esempio:
Italiano Italia --> it-it
Francese Francia --> fr-fr
Inglese Stati Uniti --> en-usPuoi fare così usando gli esempi che ti ho scritto poco sopra:
[php]<?php
$lin = $_SERVER['HTTP_LANGUAGE']; // Appunto la lingua del pcif($lin == "it-it") { header('Location: pagina-in-italiano.htm-php'); } // Se è italiano italia, nota quel "it-it"
else if($lin == "it-it") { header('Location: pagina-in-francese.htm-php'); } // Se è francese francia, nota quel "fr-fr"
else if($lin == "en-us") { header('Location: pagina-in-inglese.htm-php'); } // Se è inglese americano, nota quel "en-us"
else { echo "Per la tua lingua non c'è nessuna pagina"; } // Se per la lingua dell'utente non hai messo nessun "if"
?>[/php]Oppure così:
[php]<?php switch($_SERVER['HTTP_LANGUAGE']) {
case 'it-it': header('Location: pagina-in-italiano.htm-php'); break; // Se è italiano italia, nota quel "it-it"
case 'fr-fr': header('Location: pagina-in-francese.htm-php'); break; // Se è francese francia, nota quel "fr-fr"
case 'en-us': header('Location: pagina-in-inglese.htm-php'); break; // Se è inglese americano, nota quel "en-us"
default: echo "Per la tua lingua non c'è nessuna pagina"; break; // Se per la lingua dell'utente non hai messo nessun "case"
} ?>[/php]Fammi sapere...
-
dove hai letto che esiste un HTTP_LANGUAGE? non sono riuscito a trovare niente a riguardo, ho trovato invece (it2.php.net/reserved.variables.server) un HTTP_ACCEPT_LANGUAGE che sarebbe > Contents of the Accept-Language: header from the current request, if there is one. Example: 'en'. cioè la lingua impostata sul browser.
Sembra inoltre che i valori possibili sono > aa = Afar
ab = Abkhazian
ae = Avestan
af = Afrikaans
ak = Akan
am = Amarico
an = Aragonese
ar = Arabo
as = Assamese
ast = Asturiano
av = Avaric
ay = Ayamara
az = Azerbaigiano
ba = Bashkir
be = Bielorusso
bg = Bulgaro
bh = Bihari
bi = Bislama
bm = Bambara
bn = Bengali
bo = Tibetano
br = Bretone
bs = Bosniaco
ca = Catalano
ce = Chechen
ch = Chamorro
co = Corso
cr = Cree
cs = Ceco
cu = Church Slavic
cv = Chuvash
cy = Gallese
da = Danese
de = Tedesco
dv = Divehi
dz = Bhutanese
ee = Ewe
el = Greco
en = Inglese
eo = Esperanto
es = Spagnolo
et = Estone
eu = Basco
fa = Persiano
ff = Fulah
fi = Finlandese
fj = Fijian
fo = Faeroese
fr = Francese
fy = Frisian
ga = Irlandese
gd = Gaelico scozzese
gl = Gallego
gn = Guarani
gu = Gujarati
gv = Manx
ha = Hausa
he = Ebraico
hi = Hindi
ho = Hiri Motu
hr = Croato
hsb = Upper Sorbian
ht = Haitian
hu = Ungherese
hy = Armeno
hz = Herero
ia = Interlingua
id = Indonesiano
ie = Interlingue
ig = Igbo
ii = Sichuan Yi
ik = Inupiak
io = Ido
is = Islandese
it = Italiano
iu = Inuktitut
ja = Giapponese
jv = Javanese
ka = Georgiano
kg = Kongo
ki = Kikuyu
kj = Kuanyama
kk = Cazaco
kl = Groenlandese
km = Cambogiano
kn = Keniota
ko = Coreano
kok = Konkani
kr = Kanuri
ks = Kashmiro
ku = Curdo
kv = Komi
kw = Cornish
ky = Kirghiso
la = Latino
lb = Lussemburghese
lg = Ganda
li = Limburgan
ln = Lingala
lo = Laotiano
lt = Lituano
lu = Luba-Katanga
lv = Lettone
mg = Malvescio
mh = Marshallese
mi = Maori
mk = Macedone
ml = Malayalam
mn = Mongolo
mo = Moldavo
mr = Marathi
ms = Malese
mt = Maltese
my = Birmano
na = Nauru
nb = Norvegese Bokmal
nd = Ndebele, North
ne = Nepalese
ng = Ndonga
nl = Olandese
nn = Norvegese Nynorsk
no = Norvegese
nr = Ndebele, South
nso = Sotho, Northern
nv = Navajo
ny = Chichewa
oc = Occitano
oj = Ojibwa
om = Oromo
or = Oriya
os = Ossetian
pa = Punjabi
pi = Pali
pl = Polacco
ps = Pashto
pt = Portoghese
qu = Quechua
rm = Rhaeto-Romanico
rn = Kirundi
ro = Rumeno
ru = Russo
rw = Kinyarwanda
sa = Sanscrito
sc = Sardo
sd = Sindhi
se = Northern Sami
sg = Sangro
si = Cingalese
sk = Slovacco
sl = Sloveno
sm = Samoano
sn = Shona
so = Somalo
sq = Albanese
sr = Serbo
ss = Siswati
st = Sotho, Southern
su = Sudanese
sv = Svedese
sw = Swahili
ta = Tamil
te = Telugu
tg = Tajik
th = Tailandese
ti = Tigrinya
tig = Tigre
tk = Turkmeno
tl = Tagalog
tlh = Klingon
tn = Tswana
to = Tonga
tr = Turco
ts = Tsonga
tt = Tartaro
tw = Twi
ty = Tahitian
ug = Uighur
uk = Ucraino
ur = Urdo
uz = Uzbeco
ve = Venda
vi = Vietnamita
vo = Volapak
wa = Walloon
wen = Sorbian
wo = Wolof
xh = Xhosa
yi = Yiddish
yo = Yoruba
za = Zhuang
zh = Cinese
zu = Zulue che l'header in questione ci arrivi come:- Accept-Language: da, en-gb;q=0.8, en;q=0.7*
per cui bisogna fare uno split di HTTP_ACCEPT_LANGUAGE usando la virgola come separatore e prendere il primo valore, mentre gli altri sono la coppia lingua/importanza da usare nel caso il primo valore non è contemplato nelle nostre applicazioni.
(rif. forum.html.it/forum/showthread.php?s=&postid=11442553)
- Accept-Language: da, en-gb;q=0.8, en;q=0.7*
-
@saro78 said:
dove hai letto che esiste un HTTP_LANGUAGE? non sono riuscito a trovare niente a riguardo, ho trovato invece (it2.php.net/reserved.variables.server) un HTTP_ACCEPT_LANGUAGE che sarebbe cioè la lingua impostata sul browser.
Sì è vero, ho sbagliato a scrivere (mi ricordavo male), è $_SERVER['HTTP_ACCEPT_LANGUAGE'], però l'idea degli if o della funzione switch() è buona, no?
-
si l'idea dello switch (o if) è corretta tranne per il fatto che il controllo va fatto su > uno split di HTTP_ACCEPT_LANGUAGE usando la virgola come separatore e prendere il primo valore
-
Tipo questo?
[php]list($lingua) = explode(",", $_SERVER['HTTP_ACCEPT_LANGUAGE']);[/php]
E poi usare $lingua al posto di $_SERVER?
Comunque sapevo che era il trattino, non la virgola, vedendo appunto it-it, fr-fr e en-us ma se dici che va la virgola usiamo la virgola
-
in realtà sembrerebbe che i valori possibili sono definiti come en, it, da, ect, quindi 2 caratteri, poi però dicono che l'header arriva come:*** da**, en-gb;q=0.8, en;q=0.7 *quindi può anche essere en-gb come primo valore, non è chiaro da quello che si legge nelle guide in rete.
L'unica soluzione è fare un pò di prove con una pagina di test e cambiando la lingua del browser/S.O., per vedere cosa arriva nell'header HTTP_ACCEPT_LANGUAGE.[edit]
il mio browser manda:
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3su firefox se si va in
Strumenti->Opzioni->Avanzate->Generale->Lingue->[Scegli...]
si vedono tutte le lingue possibili, che ahimè sono diverse da quelle che ho incollato nel post precedente. Tante sono nel formato it-it, rimane fermo il concetto che più lingue sono separate da virgola