Pluriweb Serviços de Internet
 
 

Central do Cliente

Serviços

Artigos Páginas de erros personalizadas com php

Páginas de erros personalizadas com php

Saiba como tirar um melhor aproveito das páginas de erros, elas são muito úteis, porém se não bem aplicadas você não consegue ter muito controle de quantos e quais tipos de erros seus visitantes estão visualizando em no site.

Por este motivo criei este artigo para dar algumas dicas de como configurar qualquer tipo de página de erro para você poder manipular as informações que são exibidas aos visitantes. Antes de começar a exibir os códigos, vou explicar de quais arquivos e pastas você precisará configurar sua página de erro em php.

Na raiz de seu site / você cria uma pasta chamada erro. Ainda na raiz do seu site, você precisará configurar ou criar um arquivo chamado .htaccess ele será o responsável em tratar os erros de forma personalizada. Então a estrutura de arquivo ficará assim:

/erro
/.htaccess
/index.php

Dentro da pasta erro, você precisará criar suas páginas de erros personalizadas da seguinte maneira:
/erro/401.shtml
/erro/403.shtml
/erro/404.shtml
...e assim por diante

Mas o pulo do gato é o que vem agora, ainda dentro da pasta erro você precisará criar um arquivo index.php para tratar os erros de forma que você possa visualiza-los depois e saber quais tipos de erros seus visitantes estão recebendo. Isso vai ser muito útil para saber se dentro de seu site existe algum link quebrado, algum acesso indevido a pastas restritas etc.

index.php
<?php

$site     = $_SERVER['HTTP_HOST'];
$erro     = (int)$_SERVER['QUERY_STRING'];
$url      = $_SERVER['HTTP_REFERER'];
$uri      = $_SERVER['REQUEST_URI'];
$data     = date("d/m/Y H:i:s");
$ip       = $_SERVER["REMOTE_ADDR"];
$email    = "seuemail @ endereco.com.br";
$pagina   = "http://".$site."/erro/".$erro.".shtml";
$assunto  = "Erro ".$erro." - ".$site;
$msgErro  = "[".$data."] IP: ".$ip." - ERRO ".$erro." - LINK: ".$uri." - REFERÊNCIA: ".$url;
if(isset($erro)){
   if(file_exists($erro.".shtml")){
      mail($email,$assunto,$msgErro);  // envia um e-mail
      $fp = fopen("erro.txt", "a");    // grava em arquivo de log
      fputs ($fp, "$msgErro\r\n");
      fclose($fp);
      header ("Location: $pagina");    // redireciona o visitate
   }
}

O interessante deste arquivo é que você não precisa adicionar todas as págians de erros dentro dele, pois ele mesmo recebe a vairável $_SERVER['QUERY_STRING'] e localiza dentro da pasta erro se possui algum arquivo.shtml se o arquivo existir ele carrega se não ele não faz nada. Você também pode tratar os erros como você quizer, como por exemplo, você pode aproveitar ao invés de jogar as informações de erros para um arquivo de texto você pode armazenar em um banco de dados.

Já no arquivo htacces você só precisa informar que quando um erro for exibido é para ele redirecionar ao arquivo index.php que está dentro da pasta erro com o respectivo código de erro informado na variável query que vai abrir a página de erro a ser exibida ao visitante.

.htaccess
ErrorDocument 401 /erro/?401
ErrorDocument 403 /erro/?403
ErrorDocument 404 /erro/?404


- Downloads dos arquivos utilizados neste artigo: clique aqui.
 


Compartilhe esta página:
 
© Copyright - Todos os Direitos Reservados.
Pluriweb - Serviços de Internet - 2001 - 2012 - www.pluriweb.com.br
Termos de Serviços | Política de Uso | Política de Privacidade