Den Sun, 12 May 2013 10:10:27 +0200 skrev Kurt Hansen:
> ... en søgning på "HTTP_ACCEPT_LANGUAGE" viser mig
> straks, at det fører for vidt. Da det er browseren der giver
> informationen, få man altså forskelligt input og så skal man til at lave
> arrays med forskellige handlinger, afhængigt af browser. Interessant,
> men langt uden for min rækkevidde.
Er det ikke bare at undersøge om HTTP_ACCEPT_LANGUAGE indeholder 'da' ?
Det følgende kan vise en "dansk.html" hvis det er kaldt med sprog sat med
get (index.php?sprog=dk). Hvis ikke sprog er sat undersøges om HTTP_ACCEPT_LANGUAGE indeholder 'da'.
Står der ikke 'da' i HTTP_ACCEPT_LANGUAGE undersøges om IP er fra Danmark, Norge eller Sverige.
Er det ikke tilfældet vises filen engelsk.html
Du kan så lave flag med link til hhv. index.php?sprog=dk og index.php?sprog=en
For at få test af IP til at virke, så hent
http://www.maxmind.com/download/geoip/api/php/php-latest.tar.gz
pak den ud og upload filen geoip.inc
samt GeoIP.dat fra
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
<?php
# Lande hvorfra man skal se den danske side som standard:
$danskside = array('dk','no','se');
# Se om sprog allerede er valgt
if (array_key_exists('sprog', $_GET)) {
$sprog = $_GET['sprog'];
} elseif (false !== strpos(strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']),'da')) {
$sprog='dk';
} else {
# ellers så find landet
include('geoip.inc');
$gi = geoip_open('GeoIP.dat',GEOIP_STANDARD);
$land = strtolower(geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']));
if (in_array($land, $danskside)) $sprog='dk';
}
if (isset($sprog) && $sprog=='dk') {
include 'dansk.html';
} else {
include 'engelsk.html';
}