Laisser les erreurs de PHP s'afficher sur la page ennuie le visiteur qui trouve que le site est mal fait (il y a
"plein" d'erreurs, je vais voir ailleurs!). De plus, afficher les erreurs peut (peut-être) ouvrir une faille pour
des pirates. Bref, vous avez tout intérêt à apprendre comment gérer vos erreurs en PHP.
error_reporting(0);
| E_ERROR | Rapporte toutes les erreurs qui ne peuvent pas êtres ignorées et qui stoppent l'exécution du script (oubli d'un ";" par exemple). |
| E_WARNING | Les alertes n'interrompent pas l'exécution du script. Elles indiquent un problème que renconter le script pendant l'exécution. Par exemple, utiliser un regex invalide. |
| E_NOTICE | Les notices indiquent que le script a rencontré quelque chose qui peut être une erreur, mais qui peut aussi être quelque chose de normal, une variable non initialisée par exemple. |
| E_ALL | Toutes les erreurs |
error_reporting(E_NOTICE);
error_reporting(E_ALL ^ E_NOTICE);
//Toutes les erreurs s'afficheront sauf les notices.
error_reporting(E_ERROR | E_WARNING);
//Seules les erreurs et les avertissements s'aficheront.
set_error_handler('nom_de_la_fonction_de_callback');
Que fait-on du visiteur, on lui affiche quand même la page?
: dans la fonction que vous allez créer, les arguments doivent être utilisés dans l'ordre cité ci-dessus. A savoir: le niveau de l'erreur, le message, le fichier puis la ligne.
Commençeons notre fonction:
function gestion_erreur($niveau, $message, $fichier, $ligne){
$date = date('d/m/y \Ã H:i:s');
//On récupère la date pour faire plus précis.
$message = "Bonjour webmaster, \n\n Une erreur est survenue le $date dans le fichier
$fichier à la ligne $ligne\n\n A+";
//On crée le message
$sujet = 'Erreur dans un fichier';
//Ecriture du sujet du mail
$adresse = 'webmaster@site.be';
//L'adresse du webmaster
mail($adresse, $sujet, $message);
//Puis on envoie le mail.
Pourquoi as-tu mis les variables dans le texte sans utiliser la concaténation ($var='texte'.$variable.'suite';)?
: utilisez le plus possibles des simple quotes (') car elles font moins travailler le seveur (pas de parcourt du texte). Le temps d'exécution de votre page sera donc plus rapide.
Maintenant, on va afficher un petit message au visiteur pour le prévenir qu'il y a eu une erreur sur cette page, on termine la fonction, puis on utilise set_error_handler(); pour envoyer les erreurs (s'il y en a) à notre fonction gestion_erreur();.
echo'Une erreur est survenue lors de l\'exécution du script. Ne vous en inquiètez pas, le
webmaster a été prévenu automatiquement.<br /><br />Bonne visite.<br />L\'administrateur';
//Affichage d'un petit mot au visiteur.
exit;
//On bloque l'exécution du script
}//Fin de la fonction.
set_error_handler('gestion_erreur');
:Vous pouvez remplacer le petit mot qui s'affiche au visiteur par une "véritable" page d'erreur.