Onko kenelläkään valmista koodia joka toimisi näin:
Jos on suomalainen IP, ohjaisi .../suomi ja jos joku muu eli ei suomalainen, ohjaisi .../english
Ilmari123 kirjoitti:
Jos on suomalainen IP, ohjaisi .../suomi ja jos joku muu eli ei suomalainen, ohjaisi .../english
Ohjaus kannattaisi tehdä Accept-Language-headerin eikä IP-osoitteen mukaan.
-tossu- kirjoitti:
Ilmari123 kirjoitti:
Jos on suomalainen IP, ohjaisi .../suomi ja jos joku muu eli ei suomalainen, ohjaisi .../english
Ohjaus kannattaisi tehdä Accept-Language-headerin eikä IP-osoitteen mukaan.
Minkä? Kertoisitko mulle
Ilmari123 kirjoitti:
Minkä? Kertoisitko mulle
Selain lähettää sivua pyytäessään palvelimelle Accept-Language-headerin, jossa on määritelty, mitä kieliä käyttäjä haluaa lukea. Minulla se näyttää olevan "fi,en-US;q=0.9,en;q=0.8". Kielet ovat erotettuina toisistaan pilkulla, ja q-arvoista, jotka määrittelevät kielen prioriteetin, puolipisteillä.
Jos Accept-Languagesta löytyy "fi" suuremmalla prioriteetillä kuin "en", niin anna käyttäjälle suomenkielinen sivu, muutoin englanninkielinen. Minä tuskin edes jaksaisin koodata kunnollista tarkistusta, vaan katsoisin löytyykö headerista merkkijono "fi" ja sen mukaan päättäisin, minkä kielinen sivu käyttäjälle annetaan.
Tuossa on muutama tieto, joista voi päätellä käyttäjän kieltä:
<?php echo "<li>" . gethostbyaddr($_SERVER['REMOTE_ADDR']); echo "<li>" . $_SERVER['HTTP_ACCEPT_LANGUAGE']; ?>
Testisivu: https://www.ohjelmointiputka.net/testit/maa.php
Onkohan Accept-Language yleensä ottaen luotettava kenttä? Minulla tavallisesti asennetun selaimen Accept-Language on "en-us,en;q=0.5", eli ainakaan minun kohdallani siihen perustuva tarkistus ei toimisi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.