Aller au contenu

Erreur 404 + mail


Sujets conseillés

Kikou all,

J'ai crée une page erreur404.php contenant des lignes html agrémentant la page d'erreur ainsi que les lignes suivantes en tête afin qu'un mail me soit envoyé si un internaute tape une adresse erronnée :

<?
$result=1;

if (preg_match("'DigExt'",$HTTP_USER_AGENT)) $result=0;
if (preg_match("'votre_application_JAVA'",$SCRIPT_URI)) $result=0;
if (preg_match("'cltreq.asp'",$SCRIPT_URI)) $result=0;
if (preg_match("'owssvr.dll'",$SCRIPT_URI)) $result=0;

if ($result==1){
$to="geo909_AT_entraideinfo.com";
$sujet="ERREUR 404 sur VOTRE SITE.";
if(empty($HTTP_REFERER)) { $provenance="Pas de lien intermédiaire, connexion directe"; } else { $provenance=$HTTP_REFERER; }
$message="\nUne erreur 404 s'est produite sur le site VOTRE SITE.\n\nProvenance : ".$provenance.";
Page : ".$SCRIPT_URI."\nNavigateur : $HTTP_USER_AGENT\nAdresse IP : http://$REMOTE_ADDR\nNom de domaine : ".gethostbyaddr($REMOTE_ADDR)."\n";
_AT_mail($to,$sujet,$message,"FROM:Erreur404");
}
?>

J'ai ensuite crée un fichier .htaccess contenant le chemin du fichier erreur404.php

Si pour le chemin je met /erreur404.php la notification m'est bien envoyé mais je le fichier erreur404.php ne s'affiche pas (à la place j'ai le fichier local d'erreur 404 par défaut)

Si je met le chemin complet http://www.monsite/erreur404.php, la page d'erreur perso s'affiche bien mais la notification ne m'est pas envoyée

Ma question en gros est :

Quelle est la bonne methode pour afficher une page personnalisée (genre une copie modifiée de ma page index.php) pour l'erreur 404 tout me permettant d'avoir une notification par mail ?

Merci pour vos réponses ;)

Lien vers le commentaire
Partager sur d’autres sites

Je dirais d'emblée, sans trop avoir regardé ton code, que tu devrais déjà chercher s'il existe un message d'erreur lors de la tentative (s'il y en a) d'envoi de mail, donc, pour ce faire, enlever le @ de cette ligne :

@mail($to,$sujet,$message,"FROM:Erreur404");

xpatval

Lien vers le commentaire
Partager sur d’autres sites

Suite à la modif pas de changements...par contre je précise...

Dans le fichier htaccess quand je met l'adresse courte /erreur404.php la page perso d'erreur ne s'affiche pas mais je recoit bien le mail avec l'adresse tapée qui n'est pas correct exemple :

Une erreur 404 s'est produite sur le site VOTRE SITE.

Provenance : Pas de lien intermédiaire, connexion directe;

Page : http://www.entyraideinfo.com/um/

Si je met l'adresse entière http://www.entraideinfo.com/erreur404.php

La page d'erreur personalisée s'affiche bien mais le mail contient les infos suivantes :

Une erreur 404 s'est produite sur le site VOTRE SITE.

Provenance : Pas de lien intermédiaire, connexion directe;

Page : http://www.entraideinfo.com/erreur404.php

Lien vers le commentaire
Partager sur d’autres sites

Pour la différence entre les deux versions, c'est normal. Quand tu mets le [i]http://..., aucun code 404 n'est généré et il y a toujours une redirection 302 vers l'adresse [i]http://.... La bonne solution au niveau du .htaccess est donc bien la première. :)

Dans ton erreur404.php, je ne vois pas où tu envoies le code HTML de la page d'erreur personnalisée vers ton visiteur. :whistling:

Jean-Luc

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse...voici le fichier erreur404.php complet incluant le code HTML :

<?
$result=1;

if (preg_match("'DigExt'",$HTTP_USER_AGENT)) $result=0;
if (preg_match("'votre_application_JAVA'",$SCRIPT_URI)) $result=0;
if (preg_match("'cltreq.asp'",$SCRIPT_URI)) $result=0;
if (preg_match("'owssvr.dll'",$SCRIPT_URI)) $result=0;

if ($result==1){
$to="geo909_AT_entraideinfo.com";
$sujet="ERREUR 404 sur VOTRE SITE.";
if(empty($HTTP_REFERER)) { $provenance="Pas de lien intermédiaire, connexion directe"; } else { $provenance=$HTTP_REFERER; }
$message="\nUne erreur 404 s'est produite sur le site VOTRE SITE.\n\nProvenance : ".$provenance.";
Page : ".$SCRIPT_URI."\nNavigateur : $HTTP_USER_AGENT\nAdresse IP : http://$REMOTE_ADDR\nNom de domaine : ".gethostbyaddr($REMOTE_ADDR)."\n";
mail($to,$sujet,$message,"FROM:Erreur404");
}
?>
<html>

<head>
<title>Erreur 404</title>
<meta name="robots" content="noindex, follow">
</head>

<body>
<p align="center"><font size="5" color="#FF0000"><strong>IMPOSSIBLE D'AFFICHER LA PAGE
CORRECTEMENT</strong></font></p>
<p align="center"><font size="2" color="#008000">Un mail a été envoyé au
webmaster afin de corriger cette erreur.</font></p>
<p align="center"><a href="http://www.entraideinfo.com/index.html">RETOUR</a></p>

</body>
</html>

Modifié par geo909
Lien vers le commentaire
Partager sur d’autres sites

As-tu essayé avec un autre navigateur que Internet Explorer ? Il me semble que quand Internet Explorer reçoit une page d'erreur de petite taille, il préfère afficher son propre message d'erreur standard. Ceci expliquerait toutes tes constatations.

Jean-Luc

Lien vers le commentaire
Partager sur d’autres sites

T'es un chef...c'est bien ca le problème y fallait le savoir...la page s'ouvre nikel sous firefox.

Je vais mettre une copie de ma page d'accueil en tant que page d'erreur on verra si c'est bon cette fois si...

Merci beaucoup ;)

Lien vers le commentaire
Partager sur d’autres sites

Bon, l'erreur ne venait apparement pas du "poids" de la page d'erreur mais d'un module complémentaire d'internet explorer du type "WebSearch" qui forcait l'affichage de la page de défaut locale.

pour désactiver ce module j'ai été IE > Menu Outils > Options Internet > Onglet Programmes > Clic sur "Gérer les modules complémentaires" > De là j'ai recherché dans le nom des modules celui de la page de défaut qui s'affichait à savoir "GreatSearchResult" et j'ai cliqué sur "Désactiver"

Et voila ma page d'erruer est apparu ;)

Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...