Example de page ERROR.PHP avec formulaire d'email en cas d'erreur interne

Nouveau WRInaute
Example de page ERROR.PHP avec formulaire d'email en cas d'e

Example de page ERROR.PHP avec formulaire d'email en cas d'erreur interne du serveur (internal server error)



Bonjour,

Je suis à la recherche d'un script PHP de formulaire d'envoi d'email.

C'est pour installer sur une page ERROR.PHP que le serveur affichera en cas d'erreur interne du serveur (j'aimerais que ce soit un formulaire à remplir pour me signaler l'erreur).

Je sais déjà qu'il faut rajouter cette ligne dans le .htacess:

ErrorDocument 503 /error.php


Mais je n'ai pas encore la page error.php


Merci pour votre aide.
 
WRInaute discret
et pourquoi ne pas mettre dans ton code une petite fonction mail(), pour te le signaler directement ?? L'internaute arrive sur une page qui ne marche pas et en plus tu lui demandes de remplir un formulaire afin de te contacter...il est gentil l'internaute :)
 
Nouveau WRInaute
Le problème c'est qu'en faisant comme cela je vais recevoir des dizaines d'emails si je ne répare pas de suite, à moins qu'il y ait une possibilité de limiter le nombre d'envoi d'emails automatiques à 1 toutes les demi heures par exemple ?

Connaissez vous un script ?

Merci beaucoup.
Asian-Snake-Wine.com
 
WRInaute accro
Tu peux aussi faire une table où tu insères le message d'erreur et la page incriminée, de manière à ne faire qu'un envoi de mail pour chaque couple erreur - page.
 
WRInaute discret
Slt,

Voici ce que j'utilise :

page error.php

Code:
<?php
$email_admin = "ton_mail@gmail.com";

$monsite = "nom_du_site" ; // utile si vous administrez plusieurs sites

$message_titre = "[Erreur 404 " . $monsite . "] " . $_SERVER['REQUEST_URI'] ;

$message_corps = "Erreur 404 sur le site " . $monsite . ".\r\n" .
"Une page demandée n’a pas été trouvée. \r\n" .
"Url de la page : " . $_SERVER['REQUEST_URI'] . "\r\n" .
"Url de provenance : " . $_SERVER['HTTP_REFERER'] . "\r\n" .
"IP du visiteur : " . $_SERVER['REMOTE_ADDR'] . "\r\n" .
"Navigateur : " . $_SERVER['HTTP_USER_AGENT'] . "\r\n" .
"Heure de la requête : " . date('d/m/Y G:i:s') . "\r\n" .
"Contenu brut du tableau global $_SERVER : " . print_r($_SERVER,true)  ;

// Envoi du message
mail($email_admin, $message_titre, $message_corps) ;

// Ci-dessous, affichez votre page 404 sur mesure pour le visiteur.

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title><?php echo $page_title; ?></title>
<base href="<?php echo $script_url; ?>/">

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $langx['charset']; ?>">
		
</head> 
<body>
blablabla ...
</body>
</html>

Dans ton hatcess

Code:
# Error 404
ErrorDocument 404 /error.php

Voila tout simple
 
Nouveau WRInaute
kitten13 a dit:
Slt,

Voici ce que j'utilise :

page error.php

Code:
<?php
$email_admin = "ton_mail@gmail.com";

$monsite = "nom_du_site" ; // utile si vous administrez plusieurs sites

$message_titre = "[Erreur 404 " . $monsite . "] " . $_SERVER['REQUEST_URI'] ;

$message_corps = "Erreur 404 sur le site " . $monsite . ".\r\n" .
"Une page demandée n’a pas été trouvée. \r\n" .
"Url de la page : " . $_SERVER['REQUEST_URI'] . "\r\n" .
"Url de provenance : " . $_SERVER['HTTP_REFERER'] . "\r\n" .
"IP du visiteur : " . $_SERVER['REMOTE_ADDR'] . "\r\n" .
"Navigateur : " . $_SERVER['HTTP_USER_AGENT'] . "\r\n" .
"Heure de la requête : " . date('d/m/Y G:i:s') . "\r\n" .
"Contenu brut du tableau global $_SERVER : " . print_r($_SERVER,true)  ;

// Envoi du message
mail($email_admin, $message_titre, $message_corps) ;

// Ci-dessous, affichez votre page 404 sur mesure pour le visiteur.

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<title><?php echo $page_title; ?></title>
<base href="<?php echo $script_url; ?>/">

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $langx['charset']; ?>">
		
</head> 
<body>
blablabla ...
</body>
</html>

Dans ton hatcess

Code:
# Error 404
ErrorDocument 404 /error.php

Voila tout simple





Bonjour, est-ce compliqué de rajouter du code à ce script pour limiter l'envoi d'email à 1 toutes les 10 minutes par exemple, car c'est pour un site à fort trafic ?

Je saurais intégrer ce script mais je ne programme pas, donc merci pour votre aide!
 
WRInaute discret
c'est un peu de la bidouille, mais tu peux stocker une variable à 1 par exemple. Si var=1 AND "ta page d'erreur" => le mail part et tu passes la var à 0. Comme ça il ne part qu'une seul fois.
Ensuite, sois tu as un cron qui recharge ta variable à 1 toute les 15mn par exemple, sois tu le change à la main une fois le problème réglé avec le risque d'oublier...
 
WRInaute discret
Bon je vous mais aussi une autre parti de mon script aussi

alertes e-mail pour les erreurs MySQL

Code:
<?php 

function mysql_requete($requete, $msg_erreur = "Erreur indéfinie")
{
    $resultat = mysql_query($requete);
    if (mysql_error())
    {
        $message_destinataire = "admin@monsite.com";
        $message_titre = "Erreur MySQL sur le script " . $_SERVER['REQUEST_URI'] ;
        $message_corps = "Une erreur MySQL s'est produite sur le script " . $_SERVER['REQUEST_URI'] . "\r\n" .
            "Nature de l'erreur :\r\n" . 
            mysql_error() . "\r\n" .
            "----------------------------------------------\r\n" . 
            "Requête SQL : \r\n" .
            $requete . "\r\n" .
            "----------------------------------------------\r\n" . 
            "Variables d'environnement SERVER : \r\n" .
            print_r($_SERVER, true) . "\r\n" . 
            "----------------------------------------------\r\n" . 
            "Variables d'environnement REQUEST : \r\n" .
            print_r($_REQUEST, true) . "\r\n"
            "----------------------------------------------\r\n" . 
            "Variables d'environnement COOKIE : \r\n" .
            print_r($_COOKIE, true) . "\r\n"
            "----------------------------------------------\r\n" . 
            "Variables d'environnement SESSION : \r\n" .
            print_r($_SESSION, true) . "\r\n";
;

        mail($message_destinataire, $message_titre, $message_corps);
    }
    return $resultat;
}


?>

Voila tout simple, maintenant dormez sur vos deux oreilles :wink:
 
WRInaute discret
Re: Example de page ERROR.PHP avec formulaire d'email en cas d'e

Voici le code modifié est améliorer :

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

Dans page 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=email@levotre.com]email@levotre.com[/email];
         $subject            = 'Erreur internet '.$_SERVER['REDIRECT_STATUS'];
         $message            = $mess;
         $headers            = 'From: [email=noreply@levotre.com]noreply@levotre.com[/email]'."\r\n".'Reply-To: [email=noreply@levotre.com]noreply@levotre.com[/email]'."\r\n";
   
         mail($to, $subject, $message, $headers);
         }[/code

Bien plus simple et propre que mon bout de code fournis plus haut, merci à l'auteur original.

La source : [url=https://www.webrankinfo.com/forum/t/script-maison-de-generation-derreur-avec-envoi-dun-e-mail.61084/]https://www.webrankinfo.com/forum/t/script-maison-de-generation-derreur-avec-envoi-dun-e-mail.61084/[/url]
 
Discussions similaires
Haut