Browsername ohne get_browser()
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
agent
aufruf
beispiel
browser
code
ergebnis
falsche informationen
fehlermeldung
funktion
http
internet
nutz
opus
parameter
safari
string
testen
url
windows
zugriff
-
Guten Tag,
ich möchte gerne den Namen eines Browsers herasufinden. Dies soll mit PHP geschehen. Leider unterstütz mein Webspace-Anbieter die Funktion get_browser() nicht. Dehalb jetzt meine Frage, ob es eine Möglichkeit gibt, den Browser herauszufinden ohne auf jeden Browser einzeln zu prüfen?
lg
P.S. Ich weiß, dass man den User-Agent-String leicht manipulieren kann. Dies ist hier jedoch zu venachlässigen. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Dann habe ich aber den ganzen User-Agent, ich möchte aber nur den Namen, wie zum Beispiel Firefox, Chrome, IE usw.
-
hmmm, dann musst Du halt im User-Agent String nach typishen Zeichen suchen
bzw. dir die Funktion getBrowser selber schreiben
<?php // ------------------------------------------------------ if (function_exists('getBrowser')) { function getBrowser() { $u_agent = $_SERVER['HTTP_USER_AGENT']; $ub = ''; if(preg_match('/MSIE/i',$u_agent)) { $ub = "Internet Explorer"; } elseif(preg_match('/Firefox/i',$u_agent)) { $ub = "Mozilla Firefox"; } elseif(preg_match('/Chrome/i',$u_agent)) { $ub = "Google Chrome"; } elseif(preg_match('/Safari/i',$u_agent)) { $ub = "Apple Safari"; } elseif(preg_match('/Flock/i',$u_agent)) { $ub = "Flock"; } elseif(preg_match('/Opera/i',$u_agent)) { $ub = "Opera"; } elseif(preg_match('/Netscape/i',$u_agent)) { $ub = "Netscape"; } return $ub; } } // ------------------------------------------------------ $user_browser = getBrowser; // ------------------------------------------------------ ?>
das kann man sicher noch verfeinern, mit Version, etc.
EDIT: oder schau mal: http://phpsniff.sourceforge.net bzw hier http://sourceforge.net/projects/phpsniff/
... eine passende PHP class
:)
Beitrag zuletzt geändert: 11.4.2012 16:07:40 von lukepress -
Gut, auch wenn das heißt, dass ich für jeden Browser den ich haben möchte umschreiben möchte. Vlt fäält mir ja noch was ein das zu vereinfacehn, trotzdem vieln Dank
-
lukepress schrieb:
if (function_exists('getBrowser')) {
das heißt doch:
if (! function_exists('getBrowser')) {
Man will die Funktion ja schließlich deklarieren, wenn sie noch nicht existiert. -
fuerderer schrieb:
lukepress schrieb:
if (function_exists('getBrowser')) {
das heißt doch:
if (! function_exists('getBrowser')) {
Man will die Funktion ja schließlich deklarieren, wenn sie noch nicht existiert.
so und jetzt weise ich euch darauf hin, dass die Funktion immer definiert ist, nur da ich nicht über die PHP.ini Zugriff auf eine browscap.ini habe immer eine Fehlermeldung ausgibt -
ups
ja sorry,
wenn, dann müsste es natürlich mit dem ! sein ... Wenn NICHT ....
if (!function_exists('getBrowser')) { ...
ABER ... da ja ...
webaffe schrieb:
so und jetzt weise ich euch darauf hin, dass die Funktion immer definiert ist, nur da ich nicht über die PHP.ini Zugriff auf eine browscap.ini habe immer eine Fehlermeldung ausgibt
... der Funktion einen anderen Namen geben, nicht getBrowser() ....
(jetzt mal mit User-Agent-String ausserhalb der Funktion
dann kann man auch mit bekannten User-Agent-Strings testen)
function check_user_browser($u_agent) { $ub = ''; if(preg_match('/MSIE/i',$u_agent)) { $ub = "Internet Explorer"; } elseif(preg_match('/Firefox/i',$u_agent)) { $ub = "Mozilla Firefox"; } elseif(preg_match('/Chrome/i',$u_agent)) { $ub = "Google Chrome"; } elseif(preg_match('/Safari/i',$u_agent)) { $ub = "Apple Safari"; } elseif(preg_match('/Flock/i',$u_agent)) { $ub = "Flock"; } elseif(preg_match('/Opera/i',$u_agent)) { $ub = "Opera"; } elseif(preg_match('/Netscape/i',$u_agent)) { $ub = "Netscape"; } return $ub; }
Aufruf:
(mit User-Agent-String ausserhalb der Funktion
und als Argument / Parameter übergeben)
$user_agent = $_SERVER['HTTP_USER_AGENT']; $user_browser = check_user_browser($user_agent);
sonst halt mal phpsniff testen: http://phpsniff.sourceforge.net
:)
Beitrag zuletzt geändert: 11.4.2012 19:32:22 von lukepress -
lukepress schrieb:
ups
ja sorry,
wenn, dann müsste es natürlich mit dem ! sein ... Wenn NICHT ....
if (!function_exists('getBrowser')) { ...
ABER ... da ja ...
webaffe schrieb:
so und jetzt weise ich euch darauf hin, dass die Funktion immer definiert ist, nur da ich nicht über die PHP.ini Zugriff auf eine browscap.ini habe immer eine Fehlermeldung ausgibt
... der Funktion einen anderen Namen geben, nicht getBrowser() ....
(jetzt mal mit User-Agent-String ausserhalb der Funktion
dann kann man auch mit bekannten User-Agent-Strings testen)
function check_user_browser($u_agent) { $ub = ''; if(preg_match('/MSIE/i',$u_agent)) { $ub = "Internet Explorer"; } elseif(preg_match('/Firefox/i',$u_agent)) { $ub = "Mozilla Firefox"; } elseif(preg_match('/Chrome/i',$u_agent)) { $ub = "Google Chrome"; } elseif(preg_match('/Safari/i',$u_agent)) { $ub = "Apple Safari"; } elseif(preg_match('/Flock/i',$u_agent)) { $ub = "Flock"; } elseif(preg_match('/Opera/i',$u_agent)) { $ub = "Opera"; } elseif(preg_match('/Netscape/i',$u_agent)) { $ub = "Netscape"; } return $ub; }
Aufruf:
(mit User-Agent-String ausserhalb der Funktion
und als Argument / Parameter übergeben)
$user_agent = $_SERVER['HTTP_USER_AGENT']; $user_browser = check_user_browser($user_agent);
sonst halt mal phpsniff testen: http://phpsniff.sourceforge.net
:)
also wenn ich die Seite mit meinem Browser aufrufe bekomme ich falsche Informationen :) ich nutze Chromium, aber er wird als Safari erkannt -
webaffe schrieb:
dann musst du den preg_match anpassen. Einfach noch einmal den kompletten Usergenten ausgeben lassen und anhand dessen korrigieren.
also wenn ich die Seite mit meinem Browser aufrufe bekomme ich falsche Informationen :) ich nutze Chromium, aber er wird als Safari erkannt -
um den den preg_match anzupassen
hilft vielleicht das hier: http://www.useragentstring.com/
Eine Liste mit bekannten User Agent Strings, aber keine Ahnung wie komplett oder wie aktuell das ist
es gibt auch eine API, mit der man den User_Agent_String übergeben kann
und dazu als Ergebnis die Informationen zu Typ, Name, Version, etc. bekommt
Beispiel API Abfrage (Daten in JSON als Ergebnis-Objekt)
<?php // ------------------------------------------------- $user_agent = $_SERVER['HTTP_USER_AGENT']; $ua_string = urlencode($user_agent); $ua_call = 'http://www.useragentstring.com/?uas='.$ua_string.'&getJSON=all'; $ua_info = file_get_contents($ua_call); $ua_data = json_decode($ua_info); // ------------------------------------------------- print '<div style="text-align:left; margin-left:20px;">'."\n"; print '<pre>'."\n"; print_r($ua_data); print '</pre>'."\n"; print '</div>'."\n"; // ------------------------------------------------- ?>
Beispiel Ausgabe mit
$user_agent = 'Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0';
stdClass Object ( [agent_type] => Browser [agent_name] => Firefox [agent_version] => 12.0 [os_type] => Windows [os_name] => Windows XP [os_versionName] => [os_versionNumber] => [os_producer] => [os_producerURL] => [linux_distibution] => Null [agent_language] => [agent_languageTag] => )
keine Ahnung ob die Anzahl der API-Abfragen (pro Tag) berenzt ist,
es steht nichts davon auf der Seite (oder ich habs nicht gefunden)
aber eine gute Möglichkeit, um den Browser-Name herauszufinden,
ohne selbst den USER_AGENT String mit preg_match() zu prüfen.
auch als direkte Ausgabe einzelner Objekt-Elemente:
echo "<p> Browser-Name: ". $ua_data->agent_name ."</p> \n"; echo "<p> Browser-Version: ". $ua_data->agent_version ."</p> \n"; echo "<p> Betriebssystem: ". $ua_data->os_name ."</p> \n";
kennt jemand noch andere (evtl. bessere) User_Agent Datenbank (mit API) ?
Beitrag zuletzt geändert: 1.6.2012 13:20:21 von lukepress -
webaffe schrieb:
fuerderer schrieb:
lukepress schrieb:
if (function_exists('getBrowser')) {
das heißt doch:
if (! function_exists('getBrowser')) {
Man will die Funktion ja schließlich deklarieren, wenn sie noch nicht existiert.
so und jetzt weise ich euch darauf hin, dass die Funktion immer definiert ist, nur da ich nicht über die PHP.ini Zugriff auf eine browscap.ini habe immer eine Fehlermeldung ausgibt
Du brauchst keinen Zugriff auf die php.ini. Siehe https://github.com/garetjax/phpbrowscap -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage