Sprache (Land) des Browser (oder OS) auslesen ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
auslese
besucher
browser
code
country
dank
datenbank
dialekt
filtern
http
idee
land
output
rang
sprache
syntax
tag
tip
unbedingt genau wissen
url
-
Hallo
keine Ahnung ob das mit PHP geht (oder mitz Javascript) ... aber ich denke eher PHP ...
also ich suche etwas,
womit ich die tag/sprache">Sprache / das Land des Besuchers auslesen kann
um alle, die nicht deutsch-sprachig sind aus-filtern (bzw. umleiten) zu können.
hat jemand eine Idee, wie ich das am besten angehe ?!
habe schon was von IP-Filter in .htaccess gelesen,
aber das ist viel zu umfangreich, alle IP-Rages vorrätig zu haben zu prüfen,
und bei Proxy kann die IP ja sonst wo her kommen, also "Land" ge-faked sein.
daher meine Idee, es über die Browser-Sprache (oder Betriebssystem-Sprache) zu prüfen.
ich will ja nicht unbedingt genau wissen woher, sondern nur ob deutsch oder nicht
if ( SPRACHE == de ) ---> zur Seite1 --> else ---> zur Seite2
Ideen? Tipps? Danke!
Beitrag zuletzt geändert: 16.3.2011 17:47:58 von beeker -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
$sprache = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
Beitrag zuletzt geändert: 16.3.2011 17:56:21 von fabo -
Danke, schonmal nicht schlecht
jetzt habe ich doch noch was mit IP-Datenbank gefunden,
wo man nicht selber die Datenbank pflegen muss
folgender Code beim googeln gefunden mit whois.ripe.net Abfrage ... http://www.ripe.net ...
<?php // ----------------------------------------- function LoadRipe($search_ip) { $fp = fsockopen ("whois.ripe.net", 43) or die ("Ripe-Connect-Error!"); fputs($fp, $search_ip."\n"); while (!feof($fp)) { $output[] = fgets($fp, 4096); } fclose($fp); return $output; } // ----------------------------------------- $usripadrr = $_SERVER["REMOTE_ADDR"]; $testlanguage = LoadRipe($usripadrr); // ----------------------------------------- ## echo "<pre>\r\n"; ## print_r($testlanguage); ## echo "</pre>\r\n"; // ----------------------------------------- foreach($testlanguage as $value) { if ($ergebnis = preg_match("/country/",$value)) { echo "".$value."<br>\n"; } } // ----------------------------------------- ?>
alternative Ausgabe:
// -----------------------------------------
$uland = $testlanguage[14];
$uland = str_replace("country:","",$uland);
$uland = trim($uland);
echo "<br>".$uland."\r\n";
stellt sich nur die Frage, ob ich diese Datenbank ohne weiteres benutzen darf ?!
also .... ist Anfrage an die whois.ripe.net einfach so erlaubt ?!? http://www.ripe.net/data-tools
leider werde ich aus der PDF nicht schlau und die enthält auch noch weiterführende Links ... ?!? so gut ist mein Englisch leider nicht ^^O^^
Danke
Beitrag zuletzt geändert: 16.3.2011 18:48:15 von beeker -
Ist es, jedoch ist das begrenzt und eine Überschreitung des Limits kann zur Sperrung führen. Zudem sagt das Herkunftsland nichts über die Sprache des Besuchers aus². Da bist du mit der Browsersprache wesentlich besser bedient. Zumal die Methode auch keine unnötigen Serverabfragen hin und her sendet.
Es gibt noch die Möglichkeit einer lokalen IP2Country-Datenbank. Die ist aber aus genanntem Grunde² ebenso nutzlos.
Beitrag zuletzt geändert: 16.3.2011 21:34:58 von fabo -
Kann fabo nur zustimmen,
die Servervariable liefert hier den sichersten Wert.
$_SERVER['HTTP_ACCEPT_LANGUAGE']
Sollte der Nutzer dennoch eine andere Sprache sprechen,
dann kannst du ihm ja eine Auswahlmöglichkeit von Fähnchen bieten :) -
hallo
wenn ich das verwende:
$sprache = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
welche Werte sind dann möglich für "deutsch" ?
also DE_DE oder gints da auch AT (Österreich) bzw. DE_AT .. usw ?
-
Also, das was die Vorposter geschrieben haben war eine ganz einfache Selektierung nach der präferrierten Sprache.
Dazu muss man wissen wie der Accept-Language-Header aufgebaut ist. Die Syntax dazu ist beim w3c hinterlegt und auch dort einzusehen (Accept-Language) diese sieht dann wie folgt aus:
da passt dann z.B. sowas reinAccept-Language = "Accept-Language" ":" 1#( language-range [ ";" "q" "=" qvalue ] ) language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )
Dabei wird für jede mögliche Sprache eine Qualität angenommen (q=X.X) die angibt, wie sehr die Sprache bevorzugt wird, wenn diese nicht angegeben ist, dann wird 1 angenommen, für alle Sprache die nicht aufgeführt werden wird die Qualität 0 angenommen.de, en-gb;q=0.8, en;q=0.7 de-at, de;q=0.9, en;q=0.5 de-ch;q=0.8, de-at;q=0.8; de;q=0.6, en;q=0.5
Um nun noch die eigentliche Sprache korrekt angeben zu können gibt es auch hierzu eine Sprezifikation des w3c, die das Lanuage-Tag beschreibt, welches die folgende Syntax hat:
Was heißt, dass es eine "Hauptsprache" gibt, welche durch ein Minus getrennt von deren Dialekten getrennt wird, z.B. als "Hauptsprache" de und als Dialekte at oder ch, damit sähe die syntax so aus:language-tag = primary-tag *( "-" subtag ) primary-tag = 1*8ALPHA subtag = 1*8ALPHA
Und auch diese möglichen Werte sind festgelegt. Und für die "Hauptsprache" in der ISO 639-1 und für die Dialekte in der ISO-3166-1de-at, de-ch
Damit kannst du dann auch ganz geziehlt auf die Präferenz von Sprachen und Dialekten prüfen.
Wobei die Analyse eher hinfällig sein dürfte, oder kennst du jemanden, der tatsächlich in seinem Browser die Spracheinstellungen dazu anpasst?
Im Firefox z.B. findet man diese Werte unter:
(Windows ? "Extras" : "Bearbeiten") -> Einstellungen -> Inhalt -> Sprachen -> Wählen
Und da sind die Standardseinstellungen für einen deutschen Firefox so:de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Ich hoffe ich konnte helfen.
Mit freundlichen Grüßen -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage