PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Suche "Länder" Script.. (http://www.selfphp.de/forum/showthread.php?t=3412)

Nomad 19.02.2003 20:49:40

Suche "Länder" Script..
 
hey ihr seid meine letzte hoffung, ich hab schon so viel nach diesem script gepostet und gesucht.. aber niemand kann mir helfen...

also mein problem ist dass ich (minimale php kenntnisse :( ein java script habe, das ich als php script suche (aufgrund der erhöhten browser komptibilität).

das java script sieht folgendermaßen aus:
Code:

<SCRIPT LANGUAGE="JavaScript1.2">

if (navigator.appName == 'Netscape')
var language = navigator.language;
else
var language = navigator.browserLanguage;

if (language.indexOf('de') > -1) document.location.href = 'german.html';
else if (language.indexOf('at') > -1) document.location.href = 'german.html';
else if (language.indexOf('ch') > -1) document.location.href = 'german.html';
else if (language.indexOf('en') > -1) document.location.href = 'english.html';
else if (language.indexOf('us') > -1) document.location.href = 'english.html';
else if (language.indexOf('gb') > -1) document.location.href = 'english.html';
else
document.location.href = 'english.html';
</script>

es ist ein script dass die länder kennung des verwendeten web browsers ausliest (de, us...) und den besucher auf die gewünschte seite weiterleitet. das java script ist mir dabei zu unsicher..
ich bräuchte jedoch nur eine weiterleitung für deutsche besucher zum einen und den rest der welt zum anderen (also nicht mit ch und at.. wie oben), sondern ein ganz einfaches.

folgende ratschläge habe ich bereits erhalten:

Tip 1: http://www.php.net/manual/en/function.mb-language.php
(irgendwas mit mb_language... wenn das jemandem hilft =/ )
Tip2:
Code:

//code taken from BLM (c) 2002 - 2003

$input = array();

foreach ($HTTP_GET_VARS $k as $v) {

$input[ $k ] = $v;

}
require "./".$input['lang']."/index.php";

call on it like this script.php?lang=en
and it will go t a folder /en/index.php

(wobei dieses script den nachteil hat dass jedes land einen eigenen ordner braucht (oder??).. was ja unmöglich ist.)

ich hoffe ihr habt verstanden was ich suche und ich wäre verdammt dankbar wenn mir sich hier jemand die mühe macht und die zeit nimmt mir so etwas zu coden (da ich davon nicht viel verstehe..).

vielen dank im vorraus,
mfg phil

c4 19.02.2003 21:06:13

Die Länderkennung zu ermitteln ist mit keiner Programmiersprache sehr sicher zu ermöglichen. Mich würde man z.B. immer auf die Englischen Seiten weiterleiten. hm... warum macht es google.de eigentlich nicht?

Naja, damit sollte Dein Problemchen wohl am besten gelöst sein:
PHP-Code:

if ($_SERVER['HTTP_USER_AGENT'], strstr("[de]"))
 { 
header("Location: deutscheSeite.htm"); }
else
 { 
header("Location: derRestderWelt.htm"); } 




PS: Was für schlechte Foren/Boards es doch geben muss... ;)

Nomad 19.02.2003 21:25:32

also auf jeden fall schonmal danke für die schnelle hilfe.

nur (auch auf die gefahr hin dass du jetz lachst..)
irgendwie funzt das nicht.

ich schätze mal wie bei allen php scripten
muss das dann so aussehen:
Code:

<?php
if ($_SERVER['HTTP_USER_AGENT'], strstr("[de]"))
 { header("Location: german.html"); }
else
 { header("Location: other.html"); }
?>

also mit <?php...?> aber dann kommt immer eine fehlermeldung..

Parse error: parse error in /hier/der/absolute/path/meines/servers/index.php on line 6

ist es egal wo (also ob head oder body) ich es einfüge und hab ich was vergessen?? oder wo liegt der fehler??

c4 19.02.2003 21:29:54

Ups, ich vergaß etwas zu erwähnen: Vor der Funktion header() darf absolut nix, rein gar und ganz nix an den Browser geschickt werden! Kein <html>, kein echo" " - absolut nichts!

So, das war's vermutlich.

Unter Umständen wirst Du auch $HTTP_USER_AGENT statt $_SERVER['HTTP_USER_AGENT'] schreiben müssen, aber versuch erstmal das andere aus.

Deine .php-Datei enthält dann nur den PHP-Code, sonst nichts. Für die Ausgabe sind dann die anderen Dateien zuständig.

Guts Nächtle und viel Erfolg.

Nomad 19.02.2003 21:35:44

also die fehlermeldung kommt nachwievor, sowohl mit $HTTP_USER_AGENT, als auch mit $_SERVER['HTTP_USER_AGENT']..

ich hab das ganze script <?php ... ?> jetz GANZ an den anfang der seite gestellt - mit dem einzigen erfolg dass jetzt die fehler zeile nr. 2 ist...
was mach ich denn falsch? :(

c4 19.02.2003 21:49:18

Och Schei$$e!! Was hab ich denn da für Mist verzapft!?!

So ist es richtig:
PHP-Code:

if*(strstr($_SERVER['HTTP_USER_AGENT'],*"[de]"))
*{*header("Location: deutscheSeite.htm");*}
else
*{*header("Location: derRestderWelt.htm");*

Passiert... :)

Nomad 19.02.2003 21:58:18

juhuu :) funktioniert!! danke.

nur.. er leitet mich auf die nicht-deutsche seite weiter..?? warum auch immer.. weil mein browser müsste schon deutsch eingestellt sein..

c4 19.02.2003 22:01:51

Lass Dir mal mit
echo $_SERVER['HTTP_USER_AGENT']
den Wert ausgeben. vielleicht steht auch (de) und nicht [de] drin.

Wenn dem so ist, dann kannst Du es so erweitern:
PHP-Code:

if*(strstr($_SERVER['HTTP_USER_AGENT'],*"[de]") || strstr($_SERVER['HTTP_USER_AGENT'],*"(de)"))
*{*header("Location: deutscheSeite.htm");*}
else
*{*header("Location: derRestderWelt.htm");*

Man bedenke auch - ich erlaube mir zu zitieren: "Die Länderkennung zu ermitteln ist mit keiner Programmiersprache sehr sicher zu ermöglichen."

Nomad 19.02.2003 22:10:48

hmm... er zeigt mit user_agent leider keine sprache an.. (kann aber auch am verwendeten browser liegen - obwohl ich mit IE zum selben ergebnis komme).

auch dein 2ter lösungsvorschlag leitet immer noch auf die nicht-deutsche seite um.
naja, muss mal schaun ob ich noch ne lösung finde.
aber ein rießen dankeschön für die hilfe!! :)

hcarsten 24.02.2003 20:23:25

HTTP_USER_AGENT enthält nicht die Sprache
 
Agent bestimmt nicht die Sprache
Hallo,
die Variable HTTP_USER_AGENT enthält nicht die Sprache des Benutzers. Diese wird in HTTP_ACCEPT_LANGUAGE bereit gestellt. Normalerweise wird ein Benutzer diese nicht im Browser verändern und damit enthält diese dann für deutsche User in der Regel einfach ein "de".

Am besten änderst Du die Anweisung wie folgt :

if (strstr($_SERVER['HTTP_ACCEPT_LANGUAGE'], "de"))
{ header("Location: deutscheSeite.htm"); }
else
{ header("Location: derRestderWelt.htm"); }


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:59:44 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.