• User

    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.


  • User Attivo

    Allora Michele, sai come vedere la provenienza dell'utente?

    :gthi:


  • User Attivo

    Ciao Michele,

    Dai un'occhiata a questa classe: www.devpro.it/php4_id_89.html

    penso faccia al caso tuo.

    Facci sapere come risolvi.

    😉


  • User

    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.


  • User Attivo

    Lo puoi fare in php, ti sposto nella sezione adatta.
    😉


  • User Attivo

    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-us

    Puoi fare così usando gli esempi che ti ho scritto poco sopra:

    [php]<?php
    $lin = $_SERVER['HTTP_LANGUAGE']; // Appunto la lingua del pc

    if($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... 🙂

    :gthi:


  • Bannato User Attivo

    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)


  • User Attivo

    @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? :wink3:

    :gthi:


  • Bannato User Attivo

    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


  • User Attivo

    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 😉

    :gthi:


  • Bannato User Attivo

    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.3

    su 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 😉