WElcher Browser & Land

DevEye

Erfahrenes Mitglied
Wie weiß ich welchen Browser der besucher benutzt?

was heißt das?
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Und wie krieg ich das land raus woher der benutzer kommt??
 
Ich würde sagen dass der Besucher den
Internet Explorer 5.5 unter WindowsNT 4.0 und
Internet Explorer 6.0 unter WindowsXP (glaub ich)
benutzt hat.
Solche Sachen kannst Du mittels:
PHP:
<?
	print "Browser: ".getenv(HTTP_USER_AGENT)." <br />";
	print "IP-Adresse: ".getenv(REMOTE_ADDR)." <br />";
	print "Herkunftsland: ".getenv(HTTP_ACCEPT_LANGUAGE);
?>
herausbekommen.

Vorsicht: Die Sprache muss nicht immer stimmen. Ich habe einen Mozilla mit englischer Sprache und ein deutsches System und es zeigt mir ein englisches (aufgrund des englischen Browsers) an!

MfG,
digi
 
Original geschrieben von DevEye
Die ersten beiden befehle kenn ich, aber wie kann ich die ausgabe auf den browser reduzieren.... ;)

Wie bitte?! Was meinst Du?!

Das einzige was Du machen musst, damit Deine Website mit allen Browsern angesehen werden kann, ist auf den Rückgabewert der Funktion getenv(HTTP_USER_AGENT) zu reagieren und entweder in einer Gesamtpräsentation bestimmte browserspezifische Anspassungen vorzunehmen (schau z.B. auf http://www.selfhtml.net um zu erfahren welche HTML-Konstrukte auf welchem Browser lauffähig sind), oder aber zwei oder mehr verschiedene Varianten Deiner Präsentation zu erstellen die abhängig von dem Browsertyp geladen werden. Letztere Möglichkeit ist relativ widersinnig angesichts der Tatsache, dass Du mit PHP arbeitest, das Dir ja die Möglichkeit geben soll, interaktiv auf den Benutzer und natürlich auch seinen verwendeten Browser zu reagieren.

MfG.
Patrique <p.lafos@freenet.de>
 
Also wenn dir HTTP_ACCEPT_LANGUAGE zu ungenau ist, kannst du dich auch auf die IP-Adresse beziehen und durch eine RIPE-Whois-Abfrage das zugehörige Land rausfinden.

Ich hab dazu mal schnell eine Funktion gebastelt:
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];
}
('&#123;' durch '{' ersetzen...)

Aufruf sollte selbsterklärend sein. Der Rückgabewert ist im Falle einer erfolgreichen Abfrage ein aus zwei Buchstaben bestehender Ländercode (für Deutschland ist das z.B. DE).


Wegen der Browserfrage... musst halt mit strstr HTTP_USER_AGENT auf einen bestimmten String prüfen... nach ein bisschen rumprobieren solltest du schon rausfinden, welcher String für welchen Browser typisch ist.


HTH
 
Zuletzt bearbeitet:
@reima: Danke für den Tipp. Sowas könnte ich mal gute gebrauchen!

@DevEye: reim hat Recht, einfach mal nach einem bestimmten String (ohne PHP) fahnden und gucken inwieweit der mit allen Browser kompatibel ist, den weglassen und dann die Ident für den Browser raussuchen.
Kurz:
Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2a) Gecko/20020910

Das Mozilla/4.0 (compatible; weglassen und dann den Rest (MSIE 5.5 oder MSIE 6.0) auslesen und Du hast Deine Browser-Version von IE.

Bei anderen Browsern musst Du ausprobieren wie es geht.
 
Original geschrieben von reima

Aufruf sollte selbsterklärend sein. Der Rückgabewert ist im Falle einer erfolgreichen Abfrage ein aus zwei Buchstaben bestehender Ländercode (für Deutschland ist das z.B. DE).

sorry, ist es für mich leider nicht.

Könntest du kurz beschreiben, wie ich die Funktion aufrufe bzw. den Rückgabewert ansprechen kann?

thx alex
 
Zurück