Jump to content


Photo

Personalizar 404


  • Faça o login para participar
9 replies to this topic

#1 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

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 ?
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#2 B!ö$

B!ö$

    12 Horas

  • Usuários
  • 129 posts
  • Sexo:Masculino
  • Localidade:Randômico

Posted 19/09/2007, 14:05

Vamos começar.

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 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

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"
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#4 B!ö$

B!ö$

    12 Horas

  • Usuários
  • 129 posts
  • Sexo:Masculino
  • Localidade:Randômico

Posted 19/09/2007, 17:15

Desculpe, esqueci de trocar a variável...

Troque o $HTTP_REFERER por $_SERVER['REQUEST_URI']...

Abraços!

#5 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 20/09/2007, 08:20

Não deu...

Ele retorna a página "./erro.php?e=404"..

Tah quase, mas ainda naum eh isso... rsrs
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#6 klauss

klauss

    it me

  • Usuários
  • 84 posts
  • Sexo:Não informado

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)) {
	}
}
?>


#7 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

Posted 20/09/2007, 09:37

Klauss, boa dica, mas não tem muito haver com isso neh..

Eu quero saber qual página o visitante tentou ver... tem como ?
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#8 klauss

klauss

    it me

  • Usuários
  • 84 posts
  • Sexo:Não informado

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 Falci

Falci

    12 Horas

  • Usuários
  • 187 posts
  • Sexo:Masculino
  • Localidade:Brasil

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?
<?php /* falci at Falci.me */

$naoAcrediroQueEuFizUmaVariavelTaoGrandeSoParaGuardarUmTres = 3;
?>

#10 klauss

klauss

    it me

  • Usuários
  • 84 posts
  • Sexo:Não informado

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.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq