Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, estou capturando o http_user_agent do usuario, mais ele ta vindo com tudo esse nome ai.. tem alguma forma de trazer somente chrome, mozilla e assm por diante..? alguém tem alguma dica ai que eu possa seguir de base... obrigado! HTTP_USER_AGENT Mozilla/5.0 (Macintosh. Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
Caso não tenha entendido, vou dar um exemplo.
Obs: não sou bom com explode e tenho certeza que essa não é a alternativa mais segura de identificar um navegador.
<?php
$nav1 = $_SERVER['HTTP_USER_AGENT'];
$nav2 = explode(")", $nav1);
$nav3 = explode ("/", $nav2[2]);
echo $nav3[0];
?>
**Obs: **isso é apenas uma demonstração de uma gambiarra que poderia fazer.
Lembrando que pode causar o corrompimento do script em alguns navegadores porque os caracteres mudam de acordo com o windows, navegador, versão e etc.
Não aconselho em hipótese alguma você usar esse método **HTTP_USER_AGENT**.>
9 horas atrás, peterstefan disse:
Olá, estou capturando o http_user_agent do usuario, mais ele ta vindo com tudo esse nome ai
Sim só irá retornar esses dados, pois são os dados da máquina que acessou o servidor, para um filtro você deve usar essa informação para buscar o que realmente deseja.
Para simplificar eu criei essa classe já há algum tempo que pode usar para obter a informação que deseja:
Classe UserAgent.php
>
Citar
Cuidado ao dar Ctrl+C & Ctrl+V
O fórum aqui usa jquey para reescrever dados em JSON o que buga alguns tipos de caracteres não imprimíveis.
Caso copie e cole use um editor que é capaz de interpretar caracteres não legíveis para apagar-los antes de salvar o arquivo.
<?php
/**
* ****************************************************
* @Copyright (c) 2017, Spell Master.
* @version 1.2 : 2018 Spell Master
* ****************************************************
* @Class: Retorna dados na máquina que está acessamdo
* o servidor.
* ****************************************************
* @log v1.2 : Adicionado método para obter o IP da
* máquina.
* ****************************************************
**/
class UserAgent {
private $userData;
private $userIP;
private $setOS;
private $setBrowser;
private $osTrue = null;
private $browserTrue = null;
/** ************************************************
* @Method: Define os dados e chama os métodos.
* *************************************************/
function __construct() {
$filterServe = filter_input_array(INPUT_SERVER, FILTER_DEFAULT);
$filterIp = filter_input_array(INPUT_SERVER, FILTER_VALIDATE_IP);
$this->userData = $filterServe['HTTP_USER_AGENT'];
$this->userIP = $filterIp['REMOTE_ADDR'];
$this->checkOs();
$this->checkBrowser();
}
/** ************************************************
* @Method: Verifica o sistema operacional.
* *************************************************/
private function checkOs() {
$os = ['/windows nt 10/i' => 'Windows 10', '/windows nt 6.3/i' => 'Windows 8.1', '/windows nt 6.2/i' => 'Windows 8', '/windows nt 6.1/i' => 'Windows 7', '/windows nt 6.0/i' => 'Windows Vista', '/windows nt 5.2/i' => 'Windows Server 2003/XP x64', '/windows nt 5.1/i' => 'Windows XP', '/windows xp/i' => 'Windows XP', '/windows nt 5.0/i' => 'Windows 2000', '/windows me/i' => 'Windows ME', '/win98/i' => 'Windows 98', '/win95/i' => 'Windows 95', '/win16/i' => 'Windows 3.11', '/macintosh|mac os x/i' => 'Mac OS X', '/mac_powerpc/i' => 'Mac OS 9', '/linux/i' => 'Linux', '/ubuntu/i' => 'Ubuntu', '/iphone/i' => 'iPhone', '/ipod/i' => 'iPod', '/ipad/i' => 'iPad', '/android/i' => 'Android', '/blackberry/i' => 'BlackBerry', '/webos/i' => 'Mobile'];
foreach ($os as $reg => $value) {
if (preg_match($reg, $this->userData)) {
$this->setOS = (string) $value;
$this->osTrue = true;
}
}
}
/** ************************************************
* @Method: Verifica o navegador.
* *************************************************/
private function checkBrowser() {
$browser = ['/msie/i' => 'Internet Explorer', '/firefox/i' => 'Firefox', '/safari/i' => 'Safari', '/chrome/i' => 'Chrome', '/edge/i' => 'Edge', '/opera/i' => 'Opera', '/netscape/i' => 'Netscape', '/maxthon/i' => 'Maxthon', '/konqueror/i' => 'Konqueror', '/mobile/i' => 'Handheld Browser'];
foreach ($browser as $reg => $value) {
if (preg_match($reg, $this->userData)) {
$this->setBrowser = (string) $value;
$this->browserTrue = true;
}
}
}
/** ************************************************
* @Method: Retorna os dados da máquina que está
* acessando.
* *************************************************/
public function getUserMachine() {
return $this->userData;
}
/** ************************************************
* @Method: Retorna o sistema operacional da máquina
* que está acessando.
* *************************************************/
public function getOs() {
if (isset($this->osTrue)) {
return $this->setOS;
} else {
return " ";
}
}
/** ************************************************
* @Method: Retorna o navegador da máquina que está
* acessando.
* *************************************************/
public function getBrowser() {
if (isset($this->browserTrue)) {
return $this->setBrowser;
} else {
return " ";
}
}
/** ************************************************
* @Method: Obtem o endereço de IP da máquina que
* está acessando.
* *************************************************/
public function requestIP() {
return $this->userIP;
}
}
**Usando:**
<?php
require_once('UserAgent.php');
$ua = new UserAgent();
echo("<p>O IP que acessou o servidor é: {$ua->requestIP()}</p>";
. "<p>O Sistema operacional que acessou o servidor é: {$ua->getOs()}</p>";
. "<p>O navegador que acessou o servidor é: {$ua->getBrowser()}</p>";
. "<hr />";
. "<p>Todos dados da máquina: {$ua->getUserMachine()}</p>");>
Em 02/10/2019 at 13:49, Megao disse:
Vê se isso te ajuda
https://www.php.net/manual/pt_BR/function.explode.php
Boa tarde, testei o exploader e consegui separar e tratar do jeito que precisava.. valeu...
olá Omar~ vou tester essa classe ai com calma.... obrigado!
Vê se isso te ajuda
https://www.php.net/manual/pt_BR/function.explode.php