[HTTP_USER_AGENT] Browserdetection

sam

Erfahrenes Mitglied
hui, was für ein titel ;)
also: ich hab also ein script (siehe anhang), das mir ausgibt, welcher Browser am Werk ist.
Das funktioniert auch prima, außer <ironie>mein lieblingsbrowser opera</ironie> ist am start...
dann spinnt das script nämlich und meint ein IE 5 würde ankommen.
Das kann ich verstehen, weil sich Opera ja als IE 5 ausgibt, aber was ist an dem folgenden Code-Teil (ganzes Script siehe Anhang) falsch?
PHP:
elseif(ereg("msie", $br)) {
if(ereg("msie 4.0", $br)) $browser = "Explorer 4";
elseif(ereg("msie 5.0", $br)) $browser = "Explorer 5";
elseif(ereg("msie 5.1", $br)) $browser = "Explorer 5.1";
elseif(ereg("msie 5.2", $br)) $browser = "Explorer 5.2";
elseif(ereg("msie 5.5", $br)) $browser = "Explorer 5.5";
elseif(ereg("msie 6.0", $br)) $browser = "Explorer 6"; }

elseif(ereg("opera", $br)) {
if(ereg("opera/4", $br)) $browser = "Opera 4";
elseif(ereg("opera/5", $br)) $browser = "Opera 5";
elseif(ereg("opera/6", $br)) $browser = "Opera 6";
}

Hab schon einiges probiert, aber entweder Opera streckt mir die zunge nach wie vor als IE 5 raus, oder ich krieg nen parse-error :rolleyes:
 

Anhänge

elseif(ereg("msie 6.0", $br)) $browser = "Explorer 6"; }

* hier isser der fehler ...

elseif(ereg("opera", $br)) {

if(ereg("opera/4", $br)) $browser = "Opera 4";

statt dessen:

elseif(ereg("msie 6.0", $br)) $browser = "Explorer 6"; }



if(ereg("opera", $br)) {

elseif(ereg("opera/4", $br)) $browser = "Opera 4";
 
hmm wennich das mache, dann sieht der code so aus:
PHP:
elseif(ereg("msie", $br)) {
if(ereg("msie 4.0", $br)) $browser = "Explorer 4";
elseif(ereg("msie 5.0", $br)) $browser = "Explorer 5";
elseif(ereg("msie 5.1", $br)) $browser = "Explorer 5.1";
elseif(ereg("msie 5.2", $br)) $browser = "Explorer 5.2";
elseif(ereg("msie 5.5", $br)) $browser = "Explorer 5.5";
elseif(ereg("msie 6.0", $br)) $browser = "Explorer 6"; }

if(ereg("opera", $br)) {
elseif(ereg("opera/4", $br)) $browser = "Opera 4";
elseif(ereg("opera/5", $br)) $browser = "Opera 5";
elseif(ereg("opera/6", $br)) $browser = "Opera 6";
}
und das ergebnis so:
Code:
Parse error: parse error in C:\apache\htdocs\test\useragent.php on line 70
zeile 70 ist die hier:
PHP:
if(ereg("opera/4", $br)) $browser = "Opera 4";
die is aber richtig...der fehler müss oberhalb dieser zeile sein :rolleyes:
 
Also ich glaube das Problem ist nicht das Skript sondern Opera Selbst.
Denn seit einiger Zeit (ab version 5) hat opera etwas nettes eingeführt.
Opera kann sich nämlich für folgende Browser ausgeben:
IE 5
Netscape/Mozilla 4.78
Netscape Mozilla 5
Netscape Mozilla 3.0
Opera

Eingeführt hat man das Ganze wegen browserspezifischen Redirektoren.
Da kam schlich und ergreifend Opera nicht vor. Und so kann man mit Opera auf alle seiten zugreifen.
Tolle Funktion?
 
PHP:
if(ereg("msie 4.0", $br)) $browser = "Explorer 4";
elseif(ereg("msie 5.0", $br)) $browser = "Explorer 5";

da fehlen jede menge { } in jeder zeile eigendlich

PHP:
if(ereg("msie 4.0", $br)) { $browser = "Explorer 4"; }
elseif(ereg("msie 5.0", $br)) { $browser = "Explorer 5"; }
usw ...
 
Original geschrieben von melmager
da fehlen jede menge { } in jeder zeile eigendlich
das ist mir auch schon aufgefallen, aber bei den anderen browsern funktioniert das ja auch...
ich werd die klammern trotzdem mal ergänzen

@kasi: aber in den standardeinstellungen gibt er Opera + Versionsnummer als Useragent an...
 
Moin,

also wenn ich das "/" Zeichen zwischen Opera und der versionsnummer wegmache, dann funktionierts, zumindest bei mir :).

also so: elseif(ereg("opera 6", $br))
anstatt so: elseif(ereg("opera/6", $br))

Ciao TKOlit
 
Original geschrieben von TKOlit
Moin,

also wenn ich das "/" Zeichen zwischen Opera und der versionsnummer wegmache, dann funktionierts, zumindest bei mir :).

also so: elseif(ereg("opera 6", $br))
anstatt so: elseif(ereg("opera/6", $br))

Ciao TKOlit
poste mal bitte den code, nämlch wenn ich das mache kommt immer noch "explorer 5" :(

hast du noch andere änderungen vorgenommen?
 
Original geschrieben von TKOlit
hier haste mal die ganze datei.

ciao TKOlit
dankeschön :)
ich versteh jetzt den grund immer noch nicht, warum meine version nicht geht, aber darum gehts ja nicht :-)

mfg
sam

edit: natürlich auch danke an alle anderen :rolleyes: :-)
 
Zurück