PHP 8.3.4 Released!

Algo Útil

Vamos fazer alguma coisa um pouco mais útil agora. Nós iremos checar qual é o tipo de navegador que o visitante está utilizando para ver a nossa página. Para fazer isto nós iremos checar qual é o valor da string agente que o navegador envia como parte de sua requisição HTTP. Esta informação é armazenada em uma variável. Variáveis sempre começam com um símbolo de cifrão no PHP. A variável que nos interessa no momento é $_SERVER['HTTP_USER_AGENT'].

Nota:

$_SERVER é uma variável especial reservada do PHP que contém todas as informações sobre o servidor web. Ela é conhecida como uma superglobal. Veja a página do manual relacionada às superglobais para mais informações.

Para exibir esta variável, nós podemos fazer isto:

Exemplo #1 Imprimindo uma variável (elemento do Array)

<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>

Um exemplo de saída desse script poderia ser:

Mozilla/5.0 (Linux) Firefox/112.0

Há muitos tipos de variáveis disponíveis no PHP. No exemplo acima nós imprimimos um elemento do Array. Arrays podem ser muito úteis.

$_SERVER é somente uma das variáveis que o PHP automaticamente disponibiliza para você. A lista destas variáveis pode ser vista na seção Variáveis Reservadas do manual ou você pode obter uma lista completa delas olhando o resultado da função phpinfo() utilizada no exemplo da seção anterior.

Você pode colocar múltiplas instruções PHP dentro da tag PHP e criar pequenos blocos de códigos que fazem muito mais do que um simples echo. Por exemplo, se você quer checar se o navegador é o Firefox você pode fazer isso:

Exemplo #2 Exemplo utilizando estruturas de controle e funções

<?php
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox')) {
echo
'Você está usando o Firefox.';
}
?>

Um exemplo de saída desse script seria:

Você está usando o Firefox.

Aqui nós introduzimos alguns conceitos novos. Nós temos a declaração if. Se você está familiarizado com a sintaxe básica usada pela linguagem C isto parecerá ser lógico para você. Se não você provavelmente deve ver um livro introdutório de PHP e ler os capítulos iniciais, ou ainda ler a seção Referência da Linguagem do manual.

O segundo conceito que iremos abordar é a chamada à função str_contains(). A função str_contains() vem junto com o PHP e busca uma palavra em outra palavra. Neste caso nós estamos procurando pelo texto 'Firefox' dentro de $_SERVER['HTTP_USER_AGENT']. Se o dado pesquisado for encontrado na coleção, a função retorna verdadeiro. Se não, ela retorna false. Se ela retornar true, o if avalia para true e o código dentro dos {colchetes} é executado. Caso contrário o código não roda. Tente criar exemplos similares com if, else, e outras funções como strtoupper() e strlen(). Cada página relacionada contém exemplos também. Se você estiver incerto em como utilizar funções você deve ler as páginas sobre como ler uma definição de função e a seção sobre funções do PHP.

Nós podemos avançar agora e mostrar a você como alternar entre os modos PHP mesmo que você esteja executando blocos de códigos:

Exemplo #3 Mesclando entre os modos PHP e HTML

<?php
if (str_contains($_SERVER['HTTP_USER_AGENT'], 'Firefox') !== false) {
?>
<h3>str_contains() retornou não falso</h3>
<p>Você está usando Firefox</p>
<?php
} else {
?>
<h3>str_contains() retornou false</h3>
<p>Você não está usando Firefox</p>
<?php
}
?>

Um exemplo de saída desse script poderia ser:

<h3>str_contains() retornou não falso</h3>
<p>Você está usando Firefox</p>

Ao invés de usar a declaração echo do PHP para imprimir a saída dos dados, nós saímos do modo do PHP e usamos o HTML normal. O importante a notar aqui é que a lógica do script continua intacta. Somente um dos blocos HTML será enviado dependendo do resultado da chamada à função str_contains(). Em outras palavras, depende se a palavra Firefox for encontrada ou não.

add a note

User Contributed Notes 2 notes

up
185
Declan Kelly
9 years ago
Please note that Internet Explorer 11 no longer contains MSIE in its user agent string, for example on Windows 8 with IE11 I get the following:

Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

So if you want to include a test for IE11, the code above changes to:

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE ||
strpos($_SERVER['HTTP_USER_AGENT'], 'Trident') !== FALSE) {
echo
'You are using Internet Explorer.<br />';
}
?>
up
-77
Evan Z
2 years ago
Hi. Edge is a different browser from IE. You cannot use the condition to judge it is an Internet Explorer. On the contrary, it means this is an Edge browser.

<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Edg') !== FALSE {
echo
'You are using Edge.<br />';
}
?>
To Top