Resolvendo o erro NOTICE – Undefined index: HTTP_USER_AGENT e Undefined index: HTTP_REFERER do PHP

Primeiramente vamos à algumas explicações:

De acordo com o manual do PHP no link http://php.net/manual/pt_BR/reserved.variables.server.php
http://php.net/manual/pt_BR/function.isset.php

A variavel $_SERVER é uma Superglobals
Superglobais são variáveis nativas que estão sempre disponíveis em todos escopos do sistema.

‘HTTP_REFERER’

O endereço da página (se houver) através da qual o agente do usuário acessou a página atual. Essa diretiva é informada pelo agente do usuário. Nem todos os browsers geram esse header, e alguns ainda possuem a habilidade de modificar o conteúdo do HTTP_REFERER como recurso. Em poucas palavras, não é confiável.

‘HTTP_USER_AGENT’

O conteúdo do header User-Agent: da requisição atual, se houver. É uma string denotando o agente de usuário pelo qual a página é acessada. Um exemplo típico é: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Além de outras coisas, você pode utilizar este valor com get_browser() para personalizar a geração de suas páginas para as capacidades do agente do usuário.

isset — Informa se a variável foi iniciada

Bom normalmente se usa a variavel $_SERVER[‘HTTP_REFERER’] quando queremos visualizar a URL anterior que levou o usuário ao nosso site, claro como na própria documentação fala que a mesma não é confiável, mas ela trás de vez em quando essa informação.

A variavel $_SERVER[‘HTTP_USER_AGENT’] usamos para tratar e verificar qual sistema operacional e navegador o usuário está usando.

$_SERVER[‘HTTP_USER_AGENT’] pode lhe retornar algo como Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36

O usuário está usando o Windows 7 64bits e o navegador Google Chrome neste caso.

Os tratamentos irei deixar para outro post mais tarde.

Bom o que ocorre é que em algumas vezes essas informações não são geradas causando um erro NOTICE muito chato.

[txt]
Undefined index: HTTP_USER_AGENT
ou
Undefined index: HTTP_REFERER
[/txt]

Para resolver isso usaremos o seguinte trecho de código


$Agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "";

$Referencia = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "";

echo "$Agent <hr> $Referencia";

Pronto o erro não ocorre mais.

Mas porque isso?
Bem explicando a solução e correção:

verificamos com o isset() se a variavel $_SERVER[‘HTTP_USER_AGENT’] ou $_SERVER[‘HTTP_REFERER’] foi iniciada, caso sim (true) iremos mostrar o valor normalmente, caso não (false) iremos deixar em branco.

Este tratamento simples evita a exibição do erro e para de exibir mensagens chatas em seu site que deixam o usuário com a pulga atrás da orelha.

Mas nada lhe impede de fazer assim também

 


$Agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : "Agent Indefinido";

$Referencia = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : "Referência de URL indefinida";

echo "$Agent <hr> $Referencia";

Espero que lhe ajude a explicação acima, caso tenha dúvidas ou melhorias para o caso favor deixe seu comentário.

 

Charles Corrêa on FacebookCharles Corrêa on GoogleCharles Corrêa on PinterestCharles Corrêa on RssCharles Corrêa on TwitterCharles Corrêa on VimeoCharles Corrêa on Youtube
Charles Corrêa

Administrador dos Sites Charles Corrêa, Blog Charles Corrêa e outros mais, programador web deste 2002 e sempre se atualizando as novas tendência do mercado, trabalho com soluções para SMS Marketing, E-mail Marketing, SEO, Mídias Sociais e moderador do fórum da Comunidade Brasileira do PHP-Fusion Brasil.

Também trabalhando com Internet Marketing desde 2004.


Um comentário sobre “Resolvendo o erro NOTICE – Undefined index: HTTP_USER_AGENT e Undefined index: HTTP_REFERER do PHP

  1. empregos dourados
    Firefox 35.0 Firefox 35.0 Windows XP Windows XP
    Mozilla/5.0 (Windows NT 5.1; rv:35.0) Gecko/20100101 Firefox/35.0

    Tenho foi explorar para um pouco para qualquer alta qualidade artigos ou blog posts nisto meio espaço .
    Explorar no Yahoo eu finalmente tropecei
    em cima deste web site . Leitura isto informação então sou feliz para mostrar que tenho
    um muito boa sentindo estranho eu descobriu exatamente
    o que eu precisava. Eu mais certamente fará certeza para don? t desconsiderar isto local e fornece-um olhar regularmente.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Leia o post anterior:
Apresentando Notificações Desktop no Navegador (Novo Padrão da W3C) com JS

Muitos por ai devem ter visto uma janelinha de notificação do Gmail ao receber uma mensagem na caixa de entrada,...

Fechar