¿Cómo obtengo el nombre del navegador usando PHP? Pensé que esto sería sencillo? Todo lo que necesito hacer es diferenciar entre IE y Firefox.PHP: obtenga el nombre del navegador
Respuesta
if (strpos($_SERVER['HTTP_USER_AGENT'], '(compatible; MSIE ')!==FALSE) {
...ie specific...
}
pero! ¡No!
Rara vez hay una buena razón para estar oliendo user-agent en el lado del servidor. Trae un montón de problemas, incluyendo:
navegadores y otros agentes de usuario que mentir acerca de lo que son, o tira el encabezado de agente de usuario por completo, o en general, hacen que sea difícil distinguir lo que el navegador real es del texto del encabezado. Por ejemplo, la regla anterior también detectará a Opera cuando esté simulando IE, e IEMobile (Windows Mobile), lo cual puede o no desear, ya que es un navegador diferente al IE de escritorio.
si discrimina en el agente de usuario en el servidor, debe devolver un encabezado
Vary: User-Agent
en la respuesta, de lo contrario los apoderados pueden almacenar en caché una versión de la página y devolverla a otros navegadores que no coincidan. Sin embargo, incluir este encabezado tiene el efecto secundario de desordenar el almacenamiento en caché en IE.
Dependiendo de qué es lo que está tratando de lograr, casi siempre existe una mejor manera de manejar las diferencias entre IE y otros navegadores en el lado del cliente, usando hacks CSS, JScript o conditional comments. ¿Cuál es el verdadero propósito para tratar de detectar IE en su caso?
Exactamente. Si CURSAS con; 'CURLOPT_USERAGENT ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, como Gecko) Versión/6.0.2 Safari/536.26.17');' y poof es falso :) –
$ _SERVER [ 'HTTP_USER_AGENT']
<?php
var_dump($_SERVER['HTTP_USER_AGENT']);
var_dump(get_browser(null, true));
?>
Lienzo:
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3
Array
(
[browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
[browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
[parent] => Firefox 0.9
[platform] => WinXP
[browser] => Firefox
[version] => 0.9
[majorver] => 0
[minorver] => 9
[cssversion] => 2
[frames] => 1
[iframes] => 1
[tables] => 1
[cookies] => 1
[backgroundsounds] =>
[vbscript] =>
[javascript] => 1
[javaapplets] => 1
[activexcontrols] =>
[cdf] =>
[aol] =>
[beta] => 1
[win16] =>
[crawler] =>
[stripper] =>
[wap] =>
[netclr] =>
)
1) detector Precisa: BrowserDetection.php (Examples)
2) función primitiva:
function get_user_browser()
{
$u_agent = $_SERVER['HTTP_USER_AGENT']; $ub = '';
if(preg_match('/MSIE/i',$u_agent)) { $ub = "ie"; }
elseif(preg_match('/Firefox/i',$u_agent)) { $ub = "firefox"; }
elseif(preg_match('/Safari/i',$u_agent)) { $ub = "safari"; }
elseif(preg_match('/Chrome/i',$u_agent)) { $ub = "chrome"; }
elseif(preg_match('/Flock/i',$u_agent)) { $ub = "flock"; }
elseif(preg_match('/Opera/i',$u_agent)) { $ub = "opera"; }
return $ub;
}
gracias trabajando Perfecto ! –
probar este código ...
<?php
function getBrowser()
{
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$bname = 'Unknown';
$platform = 'Unknown';
$version= "";
//First get the platform?
if (preg_match('/linux/i', $u_agent)) {
$platform = 'linux';
}
elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
$platform = 'mac';
}
elseif (preg_match('/windows|win32/i', $u_agent)) {
$platform = 'windows';
}
// Next get the name of the useragent yes seperately and for good reason
if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
{
$bname = 'Internet Explorer';
$ub = "MSIE";
}
elseif(preg_match('/Firefox/i',$u_agent))
{
$bname = 'Mozilla Firefox';
$ub = "Firefox";
}
elseif(preg_match('/Chrome/i',$u_agent))
{
$bname = 'Google Chrome';
$ub = "Chrome";
}
elseif(preg_match('/Safari/i',$u_agent))
{
$bname = 'Apple Safari';
$ub = "Safari";
}
elseif(preg_match('/Opera/i',$u_agent))
{
$bname = 'Opera';
$ub = "Opera";
}
elseif(preg_match('/Netscape/i',$u_agent))
{
$bname = 'Netscape';
$ub = "Netscape";
}
// finally get the correct version number
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
// we have no matching number just continue
}
// see how many we have
$i = count($matches['browser']);
if ($i != 1) {
//we will have two since we are not using 'other' argument yet
//see if version is before or after the name
if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
$version= $matches['version'][0];
}
else {
$version= $matches['version'][1];
}
}
else {
$version= $matches['version'][0];
}
// check if we have a number
if ($version==null || $version=="") {$version="?";}
return array(
'userAgent' => $u_agent,
'name' => $bname,
'version' => $version,
'platform' => $platform,
'pattern' => $pattern
);
}
// now try it
$ua=getBrowser();
$yourbrowser= "Your browser: " . $ua['name'];
echo $yourbrowser;
?>
salida de Firefox
Mozilla Firefox
- 1. Global ASAX: obtenga el nombre del servidor
- 2. JavaScript - Obtenga la altura del navegador
- 3. Python: obtenga el nombre completo del módulo del paquete
- 4. Comprobando el idioma del navegador por PHP?
- 5. ¿Detección del navegador móvil PHP?
- 6. Obtenga el nombre del método que se está ejecutando actualmente
- 7. Android: obtenga el nombre del archivo adjunto en mi aplicación
- 8. Obtenga el nombre del mes completo en inglés
- 9. Obtenga el nombre completo del dispositivo de audio de Windows
- 10. PHP: obtenga una sola clave del objeto
- 11. Obtenga segundos hasta el final del día en PHP
- 12. Php - obtiene el nombre del padre-escritura
- 13. PHP Obtener el nombre del directorio actual
- 14. Obtenga el contenido del módulo
- 15. inhabilitando el caché del navegador en php o usando javascript
- 16. VBScript: obtenga el nombre del equipo y/o la ruta completa del archivo de red
- 17. detección confiable del navegador del usuario con php
- 18. Magento: Obtenga visibilidad del producto
- 19. puede php detectar tamaño/resolución del monitor del navegador del cliente?
- 20. Windows Batch Script Obtenga el nombre actual de la unidad
- 21. Obtenga el nombre de usuario actual en C++ en Windows
- 22. PHP: ¿cómo determinar si el navegador admite javascript en PHP?
- 23. Android: Obtenga el nombre de aplicación de la intención
- 24. Determinación del nombre de un objeto PHP
- 25. JavaScript - Ventana del navegador de referencia por nombre?
- 26. acceso JSON nombre del objeto en PHP
- 27. Obtener el nombre del botón enviar en PHP
- 28. PHP - obtiene el nombre del color de RGB
- 29. PHP - Obtener el nombre clave del valor de matriz
- 30. Cómo especificar el nombre del puerto en php WSDL
Aunque es completamente posible obtener un valor (como se describe en las respuestas a continuación) para el navegador, debe tener en cuenta que el valor no es necesariamente exacto. – dnagirl
** Duplicado de http://stackoverflow.com/questions/1895727/how-can-i-detect-the-browser-with-php-or-javascript/** –