- Home
- Categorie
- Coding e Sistemistica
- PHP
- Redirect dalla home page, come lo imposto ?
-
Redirect dalla home page, come lo imposto ?
Ciao a tutti, spero che qualcuno più esperto di me abbia idea di come ottenere quello che ho in mente ;
1)Vorrei far effettuare un redirect automatico dalla pagina home di un mio sito web, ad un'altra pagina web.
2)Questo redirect dovrebbe essere condizionato in base al paese di provenienza dell'utente. Ad esempio, non dovrebbe succedere nulla per utenti italiani, mentre dovrebbe attivarsi per gli stranieri.Come posso fare ? Considerate che non posso usare le bandierine, la mia unica opzione è un redirect all'accesso degli utenti.
grazie!
M.
-
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