Script maison de génération d'erreur avec envoi d'un e-mail

WRInaute passionné
Comme on me l'a demandé quelque fois déjà, voici le script qui me sert pour l'envoi d'un e-mail lors d'une erreur internet (je vous laisse coder la page d'erreur personnalisé pour votre cas personnel) :

Dans le .htaccess :
Code:
ErrorDocument 400 /erreur.php
ErrorDocument 401 /erreur.php
ErrorDocument 403 /erreur.php
ErrorDocument 404 /erreur.php
ErrorDocument 410 /erreur.php
ErrorDocument 500 /erreur.php

Code:
switch	($_SERVER['REDIRECT_STATUS']) {
		case 401:
		$mess_erreur = 'Accès à la ressource refusé';
		break;
		case 403:
		$mess_erreur = 'Refus de traitement de la requête';
		break;
		case 404:
		$mess_erreur = 'Document non trouvé';
		$logoErreur = '404';
		break;		
		case 410:
		$mess_erreur = 'La ressource est indisponible et aucune adresse de redirection n\'est connue';
		}

if		(!eregi('(cltreq.asp|owssvr.dll|_vti)', $_SERVER['REQUEST_URI']) && $_SERVER['REDIRECT_STATUS'] != 410 ) {
			if		(empty($_SERVER['HTTP_REFERER'])) {
					$provenance = 'Connexion directe';
					}
			else	{
					$provenance = $_SERVER['HTTP_REFERER'];
					} 
			
			$mess	= 'Erreur internet '.$_SERVER['REDIRECT_STATUS']."\n\r";
			$mess	.= 'Provenance : '.$provenance."\n\r";
			$mess	.= 'Url demandée : '.$_SERVER['REQUEST_URI']."\n\r";
			$mess	.= 'Navigateur utilisé : '.$_SERVER['HTTP_USER_AGENT']."\n\r";
			$mess	.= 'Nom de Domaine : '.gethostbyaddr($_SERVER['REMOTE_ADDR'])."\n\r";
			$mess	.= 'IP du visiteur : '.$_SERVER['REMOTE_ADDR'];		
			$to						= email@levotre.com;
			$subject				= 'Erreur internet '.$_SERVER['REDIRECT_STATUS'];
			$message				= $mess;
			$headers				= 'From: noreply@levotre.com'."\r\n".'Reply-To: noreply@levotre.com'."\r\n";
	
			mail($to, $subject, $message, $headers);
			}

edit medium69 : correction du code erroné
 
WRInaute discret
Sympa le script.... j'en ai un moi aussi et j'en suis très content !
Par contre, petit conseil :
- les robots passent obligatoirement par la page robots.txt pour vérifier leurs éventuelles interdictions... Donc si vous ne voulez pas recevoir une tonne de mail (ce qui est mon cas...), alors pensez à créer un fichier robots.txt vide si vous n'en avez pas... sinon, vous pouvez toujours ne pas en créer pour voir quels robots viennent sur votre site ! Ce qui m'est d'ailleurs assez utile...

Sinon, juste comme ça, je reçoit environ 150 mails en une soirée, alors je vous conseille aussi soit de créer une nouvelle boite email qui stocke vos erreurs, soit vous devriez vider souvent votre boite email ! :D Et pour ceux qui ont la chance de posséder une adresse email, alors tant mieux pour vous car gmail regroupe environ 60 messages ou plus en un seul mail... cool nan !
 
WRInaute passionné
Linkid a dit:
Sympa le script.... j'en ai un moi aussi et j'en suis très content !
Par contre, petit conseil :
- les robots passent obligatoirement par la page robots.txt pour vérifier leurs éventuelles interdictions... Donc si vous ne voulez pas recevoir une tonne de mail (ce qui est mon cas...), alors pensez à créer un fichier robots.txt vide si vous n'en avez pas... sinon, vous pouvez toujours ne pas en créer pour voir quels robots viennent sur votre site ! Ce qui m'est d'ailleurs assez utile...

Je confirme :!:

J'avais fais l'erreur au début de ne pas en avoir et c'est effarant le nombre d'email que l'on peut recevoir dans ce cas.

Cela dite, on peut tout à fait maitriser dans quel cas on reçoit ou ne reçoit on pas de mail.

L'intérêt de ce script permet de détecté très facilement d'où viennent les erreur (de son site ou d'un référant).

J'ai aussi un script sur le même principe pour m'envoyé des e-mail en cas d'erreurs SQL.

ça permet de détecté de la même manière les éventuelle erreurs et surtout de savoir qu'elle erreur à été générée.

Dans le cas des erreurs SQL, je ne renvois aucune information au visiteur, si ce n'est qu'une erreur est survenue.
ça évite de donner des infos à un éventuel hacker.
 
WRInaute accro
personnellement je n'envoie pas de mails, mais à chaque erreur j'écris des infos (date, IP, navigateur, page demandée, etc) dans un simple fichier texte. C'est bien plus rapide et plus efficace ;)
 
WRInaute passionné
guicara a dit:
Le code il faut la placer ou ? Dans le htaccess ?
Merci d'avance pour ce script maison !

La première partie oui...

La seconde, il faut le placé dans une page d'erreur personnalisé.

Je n'indique que la partie qui envoie un e-mail, mais j'affiche aussi un message suivant l'erreur pour le visiteur
 
WRInaute passionné
Tu est sur que ton code est corect ?
J'ai des Parse error: parse error, unexpected '@' et autres erreur de partout !
 
WRInaute passionné
guicara a dit:
Tu est sur que ton code est corect ?
J'ai des Parse error: parse error, unexpected '@' et autres erreur de partout !

J'avais fais une erreur à une ligne (j'utilise des constante) et la syntaxe était mauvaise.

teste de nouveau...
 
WRInaute passionné
A savoir je ne peux plus accéder a un répertoire protéger par htaccess enfin, je ne vois plus la fenetre pour identifiants + pass :wink:
 
WRInaute passionné
Encore un petit problème, je resoit plus d'une vingtaine de mail par jours par exemple du boot de google qui recherche des pages que j'ai supprimer.

Comment créer un filtre qui dit de ne pas envoyer le mail si l'ip du visiteur est... ou si le document introuvable est... ?

Merci !
 
WRInaute passionné
guicara a dit:
Encore un petit problème, je resoit plus d'une vingtaine de mail par jours par exemple du boot de google qui recherche des pages que j'ai supprimer.

Comment créer un filtre qui dit de ne pas envoyer le mail si l'ip du visiteur est... ou si le document introuvable est... ?

Merci !

Le filtre il est là !!
Code:
if      (!eregi('(cltreq.asp|owssvr.dll|_vti)', $_SERVER['REQUEST_URI']) && $_SERVER['REDIRECT_STATUS'] != 410 ) {

Autrement dit...
Si la variable $_SERVER['REQUEST_URI'] ne contien pas cltreq.asp ou owssvr.dll ou _vti et la variable $_SERVER['REDIRECT_STATUS'] est différent de 410 alors exécuté le code (envoi du mail).

Tu peux testé sur ce que tu veux ; tu reçois un e-mail qui te donne des infos sur ton visiteur.

Tu as donc tout loisir de modifier la condition en conséquence...

Désolé de te dire cela, mais je ne vais quand même pas t'écrire ton site de A à Z :wink:

Je ne peux t'aider mieux que cela...

D'ailleurs, si tes pages supprimées n'ont pas de redirection 301 vers une nouvelle page, je te conseille de leur mettre un code 410 (pour ressource non disponible sans adresse de redirection connue) ; c'est mieux pour les robots
 
Discussions similaires
Haut