WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik


Homepage und Webhosting-Forum

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.


Forum » PHP & MySQL » Weiterleitung nach Land » Antworten
Benutzername:
Passwort: Passwort vergessen?
Inhalt der Nachricht: Fett | Kursiv | Unterstrichen | Link | Bild | Smiley | Zitat | Zentriert | Quellcode| Kleiner Text
Optionen: Emailbenachrichtigung bei Antworten
 

Weiterleitung nach Land
von c3o
Die originale Frage (die auch schon ein paar Monate auf dem Buckel hat) war ja aber, nach Land und nicht nach Sprache weiterzuleiten. Ob man den ACCEPT_LANGUAGE-Header jetzt per PHP oder JavaScript oder von Apache abfragt(-en lässt), ist egal.

Eine Länderkennung wäre am ehesten möglich, wenn man je nach IP-Adresse bei Ripe, Arin oder Apnic (den IP-Vergabestellen für Europa, USA und Asien) eine whois-Abfrage nach dem Besitzer der IP durchführt und aus dem Ergebnis das Herkunftsland des Providers erhält. Die Frage wäre, ob internationale ISPs wie T-Online für ihre [wenigen] österreichischen Kunden eigene IPs verwenden, oder dieselben wie für Deutschland.
Ausserdem braucht man dazu Rechte, einen Unix-Systembefehl auszuführen, und es würde natürlich eine gewisse Serverlast und Verzögerung mit sich bringen.
von NetDrag
warum laßt ihr das eigentlich nicht den apache entscheiden?

wenn ihr eine

index.html.de
index.html.en
index.html.it

schreibt, dann nimmt der Apache die vom Browser bevorzugte Sprache und gibt dann diese datei als index.html aus, falls diese funktion nicht deaktiviert wurde, was aber selten vorkommt.
Zu Testen unter www.tutzer.com
Die Sprache ändert man im ie unter Extras->Internetoptionen mit dem Button Sprachen...
Falls dann die Surferurl de enthält kann immer noch umgeleitet werden. Ich zum Beispiel aber komm aus Italien, habe meist einen .net - Provider und bevorzuge deutsche Seiten.

Eine eindeutige Kennung des Herkunftlandes ist nicht möglich. Deshalb sollte man dem User die Möglichkeit geben auf jeder Seite die Sprache zu wechseln. Wär auch schrecklich wenn es möglich wäre das herkunftsland eindeutig zu identifizieren. Verschiedene Werbeprovider haben es versucht, sind aber gescheitert.



---
We are born wet, naked and hungry, then things got worse!
von ruffneck5566
Na Ihr Streihammel,

wie wäre es denn mit java??
das einzige was ich nur nich hinbekomme ist die weiterleitung mehrer sprachen*schnief*

hier der quellcode von einer meiner seiten:

<html>
<head>

<SCRIPT LANGUAGE="JavaScript1.2">
<!--
if (navigator.appName == 'Netscape') {
var lang = navigator.language;
}
else {
var lang = navigator.browserLanguage;
}
var lang = lang.substring(0,2);
if ((lang == 'de'))
{
window.location = 'http://www.silesian-vibes.com';
}

//-->
</SCRIPT>

</html>
</head>

In diesem Script wird die sprache auf deutschland abgefragt und auch dorthin weitergeleitet. bei nicht zu treffen der sprache wird leider ein toter link aufgerufen der ins nichts führt wäre dankbar wenn mir da einer raus helfen könnte!!!!!

gruß ruffneck
von KAL
hmm weiterleitung nach land.. wozu???
von subjective
"Browsersprache" wahr wohl etwas ungünstig gewählt. Es ist halt die Sprache, welche der Browser beim Abruf bevorzugen soll. Man muss hier jedoch beachten, das sie nicht immer "de" ist. "de_DE" ist zB auch möglich. Deshalb prüfe ich nur darauf, ob sie mit "de" beginnt.

Ein typisches Problem tritt aber auf, wenn ein User mit dem englischen Mozilla über T-Online surft. Die Domain endet auf ".net" und als Sprache schickt der Browser "en".

Man könnte intern noch ein Datenbank führen die domain.tld einem Land zuordnet. Falls eine Domain nun nicht in der Tabelle vorhanden ist, könnte man ein WHOIS machen, die Daten parsen und sie entsprechend eintragen.

Falls eine Domain nicht aufgelöst werden kann, könnte man mit einem traceroute alle Rechner auf dem Weg herausfinden. Vieleicht wird ja einer davor aufgelöst...

Ich denke damit ist man so ziemlich am Ende angelangt. Aber selbst jetzt ist die Verzweigung nicht 100%ig. So können ein Ami in einem Berliner INet-Cafe sitzen.

Eine manuelle Umschaltmöglichkeit ist also trotzdem empfehlenswert.

Man sollte auch das Verhältnis zwischen Nutzen und Aufwand beachten...

cu
Thomas


---
Weaverslave
von Jürgen
Hi c3o,

Deine Erfahrungen sind wirklich interessant für mich. Vielleicht habe ich da irgendwo eine Denkblockade. Werde noch einmal grübeln müssen.
Vielleicht brauche ich dann Deinen Rat. Also bis bald.

MfG
Jürgen
von tobias
Danke erstmal an alle.
von c3o
Nur 5% mit Länderkennung??
Die Sprache ist im Normallfall im Browser schon voreingestellt, da muss man gar nichts ändern.

Hier aktuelle, über $HTTP_ACCEPT_LANGUAGE ermittelte Stats von einer meiner Seiten. Ich lasse ihn zwar nicht loggen, bei wievielen er keinen Wert bekommt, aber da diese Stats erst seit wenigen Tagen laufen müssten das so gut wie alle Besucher gewesen sein.



Trotzdem: Klar ist eine Fahnen-Seite empfehlenswert, und es muss auf jeden Fall eine Möglichkeit geben, zur anderen Sprachversion zu gelangen.

PS: Falls einer die ?-Sprachenkürzel erkennt, wär ich über ne Meldung froh.

von Jürgen
Hi zusammen!

<($HTTP_ACCEPT_LANGUAGE), die subjective in seinem guten Beispielscript auch abfragt.
Die kann man im IE zB bei den Internet-Optionen -> Sprachen einstellen.

Genau das ist es. Wenn der User diese Einstellungen nicht durchführt, können diese auch nicht weitergeleitet werden. In meinen eigenen logs finde ich die Länderkennung bei ca. 5 von 100 Usern.

< Dann gäbe es noch die Sprache des *Browsers*, also der Buttons etc, die Netscape in eckigen Klammern im UserAgent mitliefert, ca so: Mozilla/4.0 [de] (Netscape 4.78; I; Win98).

Netscape nutzten nur noch etwa 10-12% der User. Die Ausbeute wär also ziemlich mager.

Natürlich stimmt es, was Ihr bereits ausgeführt habt. Aber was nutzt es, wenn nur der geringste Teil der User damit erfasst werden kann.

Der vernünftigste Weg ist meines Erachtens der, dem User eine Einstiegseite mit den Flaggen für die einzelnen Landessprachen anzubieten.

MfG
Jürgen


von c3o
Erstens, gethostbyaddr() geht nicht nur bei fixen IPs. Es geht zwar auch nicht immer, aber doch in über 3/4 der Fälle. Trotzdem sagt die Domain wenig aus, so sind zB alle T-Online-User auf t-dialin.net, also keine .de!

Zweitens gibts die AcceptLanguage-Einstellung im Browser ($HTTP_ACCEPT_LANGUAGE), die subjective in seinem guten Beispielscript auch abfragt.
Die kann man im IE zB bei den Internet-Optionen -> Sprachen einstellen.

Dann gäbe es noch die Sprache des *Browsers*, also der Buttons etc, die Netscape in eckigen Klammern im UserAgent mitliefert, ca so: Mozilla/4.0 [de] (Netscape 4.78; I; Win98).

von Jürgen
Hi noch einmal!

Ich schick hier einmal einen Auszug aus meiner eigenen Counterdatei (meine Domain habe ich gegen "irgendwas" ausgetauscht).

http://www.irgendwas.de/navigation.html|http%3A//www.google.com/ie%3Fq%3D+Immobilien+in+Duisburg%26hl%3Dde|62.104.210.72|Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Win 9x 4.90; QXW0339c)||800|600|16

Hier sind Referer inkl. Query String, Browser Info und Bildschirmauflösung des Users erfasst worden. Eine Länderkennung vermisse ich jedoch.

MfG
Jürgen
von Jürgen
< Deshalb ja auch die 2. Bedingung mit der Browsersprache.

Ist hier die Landessprache zu erkennen ??
Wenn ja, wo?


MfG
Jürgen
von subjective
Deshalb ja auch die 2. Bedingung mit der Browsersprache. :smile


---
Weaverslave
von Jürgen
Guten Tag zusammen!

$host = gethostbyaddr($GLOBALS["REMOTE_ADDR"]);

funktioniert eigentlich nur, wenn 1. der Nameserver bekannt ist und 2. der User eine feste IP besitzt. Was sehr unwahrscheinlich ist. Die meisten User kommen über einen ISP ins Internet. Falls dieser ein Ausländer ist, stimmt die Länderkennung sowieso nicht. D. h. über den Referer kommt man hier nicht zum Ziel. Falls der User direkt eine Seite ansteuert, bleibt die Information "Referer" leer.

Die einzige Möglichkeit den User zu identifizieren wäre die Browserkennung wie: z. B.: -Mozilla/4.0 (compatible; MSIE 5.01; Windows 98-. Der sog. $USER_AGENT. Dieser beinhaltet meistens -wie oben zu erkennen- aber keine Länder- bzw. Sprachkennung.

MfG
Jürgen

von subjective
Hier meine Lösung:

<?php
$target_location = ereg_replace("/[^/]*$","",$REDIRECT_SCRIPT_URI);
$host = gethostbyaddr($GLOBALS["REMOTE_ADDR"]);

if (eregi("^de",$HTTP_ACCEPT_LANGUAGE) || eregi(".de$",$host)) {
$target_location .= "/de/index.php";
} else {
$target_location .= "/en/index.php";
}

header("Location: ".$target_location);
?>

Ich schau nach ob die Browsersprache deutsch oder die Länderkennung de ist. Wenn eine der beiden Bedingungen zutrifft, geht es auf die deutsche Seite, ansonsten auf die englische.

Thomas


---
Weaverslave
von michael
ich denke mal das ist das problem Aber das geht! Steht ja in den Logfiles auch drin... musst du Provider-Adresse auslesen (javascript oder php - damit geht das glaub ich) alles nach dem "." absplitten und dann weiterleiten!
von Jürgen
Hi,

hier ist zunächst einmal von Deiner Seite zu erklären, wie Du feststellst, aus welchem Land der User zu Deiner Seite gelangt.
Danach ist Dir dann mit Sicherheit zu helfen.

MfG
Jürgen
von tobias
Kann mir jemand sagen, wie ich einen User je nach dem Land, aus dem er kommt, auf eine bestimmte Seite weiterleiten kann?

Z.b:
Aus Deutschland -> leite weiter zu de.php

Das lässt sich doch irgendwie machen, oder?

Nach oben