Suche "Länder-Check-Script"

7ron!x

Grünschnabel
Hallo!
Ich benötige, möglichst in PHP, ein kleines Script das folgendes leistet:

a) Länder-Einstellung des Browserauslesen (zb Europäer/Amerikaner?)
b) if europe => indexEU.php
if usa => indexUSA.php

Das ganze soll in eine index.php die das dann "versteckt" durchführt und die User "aussortiert" ohne das die das mitbekommen.


Danke :)

PS: Mir ist eingefallen, das Script könnte die Besucher auch gleich Zählen =)
 
Theoretisch so:

PHP:
<?php
$language = explode(",", getenv("HTTP_ACCEPT_LANGUAGE"));
$language = strtolower($language[0]);

switch ($language){
     case de:
      // deutsche seite
      header("Location: http://www.deineseite.de/index_de.php");
      break;
     case us-en:
      // englische seite
      header("Location: http://www.deineseite.de/index_us.php");
      break;
     default:
      // standardsprache (falls Browsersprache nicht vorkommt)
      header("Location: http://www.deineseite.de/index_de.php");
// usw
}
?>

In die index.php kommt bei //deusche seite und // englische seite ein header befehl als "Umleitung" hinein. Es darf also in der index.php vor dem php kein html vorkommen, da hier nur die Umleitung vorgenommen wird.
 
Zuletzt bearbeitet:
danke!

thx für die schnelle antwort!

Ich werde das mal ausprobieren.

Wie sicher ist diese Variante?
Ich mein kann man noch anders die Herkunft des Users bestimmen?


Wie kann ich die unterschiedlichen aufrufe noch zählen?
(zb eintrag in eine txt-datei?)



MfG 7ron!x
 
PHP:
function IPtoCountry($ip)
{
    $sock = fsockopen("whois.ripe.net", 43);
    fwrite($sock, $ip."\n");
    while (!feof($sock)) {
        $info .= fgetc($sock);
    }
    fclose($sock);
    preg_match("/country:[ ]+([A-Z]{2})\n/", $info, $match);
    return $match[1];
}
musst dem script die ip vom user geben und das script gibt dir das land zurück...
 
Zuletzt bearbeitet:
k, dann pass mal auf :)
PHP:
<?
function IPtoCountry($ip)
{
    $sock = fsockopen("whois.ripe.net", 43);
    fwrite($sock, $ip."\n");
    while (!feof($sock)) {
        $info .= fgetc($sock);
    }
    fclose($sock);
    preg_match("/country:[ ]+([A-Z]{2})\n/", $info, $match);
    return $match[1];
}

$land = IPtoCountry($_SERVER['REMOTE_ADDR']);
echo $land;
?>
 
du bist aber fix :)

Gut, das Script geht. Es gibt mir natürlich "DE" aus.

Aber damit kann ich jetzt noch nicht so richtig was anfangen.

Das erste Script war schon auf dem richtigen Weg. Wenn da nicht der Fehler mit den Headers wäre....


Also:
Wie mach ich aus dem "DE" eine Weiterleitung
oder
Wie fixe ich das Problem mit dem 1. Script?


:rolleyes:

Edit:
Also ich würde sagen aus dem "echo $land" müsste man eine If-Anweisung machen mit dem Code aus dem ersten Script. Nur das geht ja nicht. :(
 
Zuletzt bearbeitet:
Re: danke!

Original geschrieben von 7ron!x

Wie sicher ist diese Variante?
Ich mein kann man noch anders die Herkunft des Users bestimmen?

Wie kann ich die unterschiedlichen aufrufe noch zählen?
(zb eintrag in eine txt-datei?)

Also, die Header-Fehler bekommst Du weg, wenn Du mein Posting (oben)noch einmal durchliest und dann auf die Passage achtest wo ich darauf hinweise, das KEIN HTML vor header() stehen darf!!!!!!! :-)

Die erste Variante (meine) liest die Angaben des Browsers aus und ist die schnellste (da das sowieso ausgelesen wird beim Kontakt zwischen Browser und Server). Sockes Variante ist zwar auch elegant, aber langsamer bzw. es besteht die Gefahr eines Verbindungsfehlers. Das Script überprüft die Registrierung des Providers. Aber was mache ich mit meinem Laptop in Asien, USA oder Frankreich? Der Anbieter wird natürlich eine andere Sprache haben als ich (mit dem Browser in meiner Sprache). Was passiert wenn die whois-Datenbank mal down ist, oder die Leitung dahin superlahm? Dann dauert es ewig (spätestens bis zum gesetzten Timeout), oder das Script meldet einen Fehler - kein Kontakt möglich.

Ich würde sagen das ist nicht ganz das wahre. Ein Browser hat eine Länderkennung und die sollte man nutzen, statt über die IP des Surfers etwas auf blauen Dunst über einen anderen Server zu erfragen.

Das Zählen der Aufrufe ist auch nicht das Problem. Ein üblicher Counter, der zusätzlich die Browser-Länderkennung in (am besten) einer Datenbank speichert, wird wohl die schnellste Lösung sein.

Tipp: PHPHITS http://www.gamba.de/index.php?s=wt

Aus der Datenbank brauchst Du nur noch die verschiedenen Länderkennungen zu zählen, und voilá hast Du eine Statistik :)
 
Zuletzt bearbeitet:
Zurück