phpbar.de logo

Mailinglisten-Archive

[php] laenderabhaengige weiterleitungen

[php] laenderabhaengige weiterleitungen

Joerg Behrens behrens_(at)_takenet.de
Tue, 05 Sep 2000 15:51:03 +0200


> Andreas Filz schrieb:
> 
> Hi leutz,
> 
> frage vorweg, macht es sinn eine laenderabhaengige weiterleitung
> anhand der ip zu setzen (deutsch oder englisch)? bzw. wie "sicher"
> waere dies, das es "richtig" funktioniert?
> 
> wuerde es reichen nur die deutschen ranges abzugleichen, oder waere es
> sinnvoller den hostname ausgeben zu lassen und sich spaeter auf das
> .de zu beziehen?
> 
> oder gibt es vielleicht noch eine bessere loesung dafuer?

Moin,moin Andreas
da gibts bestimmt bessere Lösungen fuer. Mich wuerde es schon wundern
wie du von der IP Adresse auf die Sprache schliessen willst. Mal
angenommen du bekommst ueber die Ip den Hostnamen heraus und koenntest
auch eingrenzen zu welcher Domain er gehoert und von da auf die Sprache
schliessen. Das sagt dir noch immer nicht welcher Sprache der Anwender
maechtig ist der da an seinem Client sitzt.
Mal den Ernstfall betrachtet, stell dir vor die zigtausend
auslaendischen IT Kraefte sind nun alle da und surfen hinter deutschen
Firewalls(stichwort NAT) durchs Netz. Du erkennst das Dilemmer. 

Ein Ansatz waere darauf zu vertrauen das die Anwender ihren Client
richtig konfigurieren und die bevorzugte Sprachversion einstellen.
Zumind. die grossen beiden im Browser geschaefft sehen dies vor. Als PHP
Programierer kann dir dann die Variable 'HTTP_ACCEPT_LANGUAGE' zur
Verfuegung stehen. Zusaetzlich musst du dem Anwender immer die Chance
geben die Sprachversion auf deine HTML Seite manuell auswaehlen
zuduerfen z.B mit Flaggensysmbolen.

Die solltest du entsprechend Auswerten.

Als 'schlechtes' Beispiel kann dienen:
function lang_detect($lang_poss, $lang_choice = "")
{
// Funktion zum Zuordnen der HTTP_ACCEPT_LANGUAGE Variable zu 
// gueltigen Doukumenten in verschiedenen Sprachversion 
//
// Funtionsaufruf z.B lang_detect("de,en,fr,it", it)
// 1. Als erster Wert z.B "fr,po,ru" muss ein String uebergeben werden
// der die moeglichen Sprachversionen enthaelt. Der erste
// Laendercode ist gleichtzeitig der Defaultwert falls keine
// Uebereinstimmung gefunden werden kann.
// 2. Als zweiter optionaler Wert kann ein weiterer Sprachcode angegeben
werden,
// der die Werte aus HTTP_ACCEPT_LANGUAGE ignoriert und somit versucht
den
// angegebenen Wert expliziert auszuwaehlen, sofern dieser im ersten
// Parameter vorkommt
//
//
// Returnwert ist der 2stellige ISO639 Laendercode

global $HTTP_ACCEPT_LANGUAGE;
$lang_possible = explode(",", $lang_poss);
$lang_request  = explode(",", "$HTTP_ACCEPT_LANGUAGE");

if ($lang_choice !="")
	{
	if(strpos("$lang_poss","$lang_choice") > 0)
		{
		return "$lang_choice";
		}
	}
while(list($key_request, $val_request) = each($lang_request))
	{
substr("$val_request",0,2);
reset($lang_possible);

while(list($key_possible, $val_possible) = each($lang_possible))
		{		
substr("$val_possible",0,2);

		if(substr("$val_request",0 ,2) == substr("$val_possible", 0 ,2))
			{
			
			return "$val_possible";
			}
		}
	}
return "$lang_possible[0]";
}

Gruss
Joerg Behrens

ps: schau dir mal den Apachen mit 'MultiViews' an
-- 
Key fingerprint =  92 7D E0 A6 CF AE EC 32  14 28 EF 0D 57 2A 88 5B
----------------------------------------------------------------------
TakeNet GmbH					Mobil: 0171/60 57 963			
D-97080 Wuerzburg				Tel: +49 931 903-2243				
Alfred-Nobel-Straße 20				Fax: +49 931 903-3025


php::bar PHP Wiki   -   Listenarchive