Personalizar 404
Started By Falci, 19/09/2007, 13:48
9 replies to this topic
#1
Posted 19/09/2007, 13:48
Fiz uma página (erro.php?e=404) que pega o numero do erro e mostra a mensagem relativa (switch).
Eu quero fazer com q ele grave um log.. tipo:
Erro: 404: Data: 19/09/2007 13:47:52 Página Solicitada: /blablabla.php
Mas não sei como (nem se tem como) pegar a página que deveria ser exibida...
No caso de 404, tem q retornar o endereço da página inesistente.
se for 403, da página que o usuário tentou acessar mas naum teve permissão...
e assim por diante..
como ?
Eu quero fazer com q ele grave um log.. tipo:
Erro: 404: Data: 19/09/2007 13:47:52 Página Solicitada: /blablabla.php
Mas não sei como (nem se tem como) pegar a página que deveria ser exibida...
No caso de 404, tem q retornar o endereço da página inesistente.
se for 403, da página que o usuário tentou acessar mas naum teve permissão...
e assim por diante..
como ?
#2
Posted 19/09/2007, 14:05
Vamos começar.
Modifique seu .htaccess(vou citar alguns erros):
Na página erro.php, faça um fwrite em um arquivo que queria armazenar os logs.
Não esqueda de dar um CHMOD neste arquivo & pasta....
Bom proveito.
Modifique seu .htaccess(vou citar alguns erros):
ErrorDocument 400 erro.php?e=400 ErrorDocument 403 erro.php?e=403 ErrorDocument 404 erro.php?e=404 ErrorDocument 500 erro.php?e=500
Na página erro.php, faça um fwrite em um arquivo que queria armazenar os logs.
$log = "Erro: ".$_REQUEST['e'].": Data: ".date('d/m/Y H:i:s')." Página Solicitada: $HTTP_REFERER\n"; $abrir = fopen('arquivo.log', 'a+'); fwrite($abrir, $log); fclose($abrir);
Não esqueda de dar um CHMOD neste arquivo & pasta....
Bom proveito.
Edição feita por: B!ö$, 19/09/2007, 14:09.
#3
Posted 19/09/2007, 14:25
Cara, vlw, mas jah tinha feito isso.. soh que com..Página Solicitada: $_SERVER['HTTP_REFERER'] (eh a mesma coisa neh?)
Porém retornar uma página anterior...
tipo, se eu postar um link aki no forum, para: http://meusite.com/p..._num_existe.php vai cair na ./erro.php?e=404, mas dizendo que eu sai aki do forum... eu quero q ele me diga o nome da página que foi solicitada, no caso a "pag_q_num_existe.php"
Porém retornar uma página anterior...
tipo, se eu postar um link aki no forum, para: http://meusite.com/p..._num_existe.php vai cair na ./erro.php?e=404, mas dizendo que eu sai aki do forum... eu quero q ele me diga o nome da página que foi solicitada, no caso a "pag_q_num_existe.php"
#4
Posted 19/09/2007, 17:15
Desculpe, esqueci de trocar a variável...
Troque o $HTTP_REFERER por $_SERVER['REQUEST_URI']...
Abraços!
Troque o $HTTP_REFERER por $_SERVER['REQUEST_URI']...
Abraços!
#6
Posted 20/09/2007, 09:04
Não deu...
Ele retorna a página "./erro.php?e=404"..
Tah quase, mas ainda naum eh isso... rsrs
$server = $_SERVER['SERVER_NAME']; $urlcomp = $_SERVER['REQUEST_URI']; $endereco_completo = "$server$urlcomp";
Outra dica boa de ser usanda com esse endereço completo, é quando de for checar se o xhtml da página é um xhtml valido( ex: w3c) ao invez de colocar somente:
http://validator.w3.org/check?uri=referer
colocar:
http://validator.w3.org/check?uri=<?=$endereco_completo?>
Eu uso também um formulario de email pra me enviar no celular cada tentativa de acesso a áreas que desejo controlar no meus sites:
<?php //Falta alguns ajustes mas funciona e dedura pacas $mail_para = "3100000000@minhaoperadoracobracaro.com"; $emailfrom = "i@seusite.com";//Mesmo que nao exista, vai q o emai volte $assunto = "Erro 404!"; $referencia = $HTTP_REFERER; $exclusao = "http://host-tracker.com/website-monitoring-statistics/00000/";//para não pegar o tracker toda hora e me acordar a toa $server = $_SERVER['SERVER_NAME']; $urlcomp = $_SERVER['REQUEST_URI']; $ip = $_SERVER["REMOTE_ADDR"]; $data = date("d/m/y - H:i:s"); $endereco_completo = "$server$urlcomp"; $message = "IP de acesso: $ip <br>$data <br>Endereço: $endereco_completo <br>Referencia: $referencia<br>"; $headers = "From: $emailfrom\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; $mensagem = $_POST['mensagem']; if ($referencia != $exclusao){ if (mail($mail_para, $assunto, $message, $headers)) { } } ?>
#8
Posted 20/09/2007, 09:44
Então, o $endereco_completo faz isso, ja que vai tá carregado site.com.br/enderecoerradoblablabla e vai ser exibido o codigo do 404.php:
<? $server = $_SERVER['SERVER_NAME']; $urlcomp = $_SERVER['REQUEST_URI']; $endereco_completo = "$server$urlcomp"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Erro 404</title> </head> <body> <h1>Not Found</h1> Impossivel encontrar <?=$endereco_completo ?> <br /> <hr /> </body> </html>
#9
Posted 20/09/2007, 10:12
Não Klauss...
Quanto eu tento ver uma página que não existe
Aparece a página "./erro.php?e=404" escript assim:
Not Found
Impossivel encontrar webaula.unipar.br/~falci/erro.php?e=404
Será algum tipo de configuração do servidor?
Quanto eu tento ver uma página que não existe
Aparece a página "./erro.php?e=404" escript assim:
Not Found
Impossivel encontrar webaula.unipar.br/~falci/erro.php?e=404
Será algum tipo de configuração do servidor?
#10
Posted 20/09/2007, 15:34
Aki dá:
Not Found
Impossivel encontrar localhost/asdfasdfasdfasdfasd
Mas no meu .htaccess tá diferente, tá:
ErrorDocument 404 /erro/notfound.php
ao inves de erro.php?variavel=valor
pode ser isso
Só q eu tava vendo, essa que pasei acha localhost e não http://localhost, mas ja fiz de um jeito que dava certo sim, com a url completa.
Not Found
Impossivel encontrar localhost/asdfasdfasdfasdfasd
Mas no meu .htaccess tá diferente, tá:
ErrorDocument 404 /erro/notfound.php
ao inves de erro.php?variavel=valor
pode ser isso
Só q eu tava vendo, essa que pasei acha localhost e não http://localhost, mas ja fiz de um jeito que dava certo sim, com a url completa.
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)