Voir aussi
Dans la même rubrique :
Quiz en PHP 1/3
Quiz en PHP 2/3
Quiz en PHP 3/3
Page contact en PHP 3/3
Installer un script PHP pour les nuls
Page contact en PHP 1/3
Page contact en PHP 2/3
Menu de navigation sans JavaScript
Gestion d’une rubrique... en attendant SPIP
Créer un forum à l’aide de phpBBDu même auteur :
Suivi de vos articles
Exécuter un Javascript dans une page SPIP
Reprendre un document Word
Les Centres de santé
Comité Départemental d’Education pour la Santé des Yvelines
Les sites des Médecins Maîtres-Toile
Joindre un document à un article
Placer une image dans un article
Les raccourcis typographiques
Ecrire ou modifier un article
Présentation de l’espace rédacteurs
Conseils aux rédacteurs
Lire nos fichiers de syndication
Syndication, comment s’y retrouver
Afficher plusieurs flux RSS/Atom sur une page
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Accueil du nouveau rédacteur
Javascript : n’oubliez pas Mac OS !
Positionnement fixe... même avec Internet Explorer !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Editer plusieurs fichiers de syndication 1/3
Editer plusieurs fichiers de syndication 2/3
Editer plusieurs fichiers de syndication 3/3
Documentation sur SPIP
Abandonnons RSS 0.91 !
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Utiliser les smileys
Joindre un logo à un article
Référencer un site
Création à distance d’un fichier de syndication
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Quand JavaScript est désactivé... 2/2
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Un Editeur RSS pour votre site 1/2
Un Editeur RSS pour votre site 2/2
Un lecteur RSS pour votre site 1/2
Un lecteur RSS pour votre site 2/2
Menu dépliant pour les rubriques
Quand JavaScript est désactivé... 1/2
Astuce pour les images fréquemment utilisées
Page Erreur 404 en PHP
Utilisation de la classe easyRSS
Proposer plusieurs styles pour votre siteMême indexation :
Technique Web
Quiz en PHP 2/3
Etablir un questionnaire statistique en ligne
Réaliser un formulaire de contact (3/4)
Positionnement fixe... même avec Internet Explorer !
Tri et Histogramme
Un serveur dédié pour les nuls
Conseils pour débuter un site web
Editer plusieurs fichiers de syndication 2/3
Qualité, centres d’intérêt et motivations des participants aux forums médicaux.
Editer plusieurs fichiers de syndication 1/3
Menu dépliant pour les rubriques
Un Editeur RSS pour votre site 2/2
Un lecteur RSS pour votre site 1/2
Initiation au xhtml - 1
Réaliser un formulaire de contact (1/4)
Créer une liste de QCM
Page contact en PHP 1/3
Créer un forum à l’aide de phpBB
Publication Spip : forme et typographie
Javascript : n’oubliez pas Mac OS !
Quiz en PHP 3/3
Le web structuré et sa présentation
Page contact en PHP 3/3
Comment faire migrer son site ?
Un lecteur RSS pour votre site 2/2
xhtml - 4 : Les entités
Quand JavaScript est désactivé... 1/2
MARST - Le Moteur Automatisé de Recherche en Santé au Travail
Utilisation de la classe easyRSS
Initiation au xhtml - 3 : Rappel sur les pointeurs internet (URI/URL)
Proposer plusieurs styles pour votre site
Installer un script PHP pour les nuls
Gestion d’une rubrique... en attendant SPIP
Page contact en PHP 2/3
Quiz en PHP 1/3
Quand JavaScript est désactivé... 2/2
La Netiquette des forums
Analyser les réponses à une liste de questions
Réaliser un formulaire de contact (2/4)
Editer plusieurs fichiers de syndication 3/3
Réaliser un formulaire de contact (4/4)
Réaliser un formulaire de contact (5/4)
Menu de navigation sans JavaScript
Initiation au xhtml - 2
Belles icônes pas chères !
Syndication, comment s’y retrouver
Contrôler l’accès d’une partie du site avec .htaccess
Soigner en ligne, un art impossible ?
Un Editeur RSS pour votre site 1/2
Mise en place d’un forum : une décision qui doit être mûrement réfléchie
La syndication de contenu RSS
Ecrire ce qu’on veut dans SPIP
Lire nos fichiers de syndication
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 1/3
Afficher un fil RSS/Atom sur votre site 2/3
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Syndication pour phpBB
Editez vos flux avec Fil_LE 1/2
Editez vos flux avec Fil_LE 2/2
Création à distance d’un fichier de syndication
Exécuter un Javascript dans une page SPIP
Abandonnons RSS 0.91 !
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIPSyndiquer tout le texte
Quand JavaScript est désactivé... 2/2
Proposer plusieurs styles pour votre site
Gestion d’une rubrique... en attendant SPIP
Menu de navigation sans JavaScript
Quiz en PHP 2/3
Editer plusieurs fichiers de syndication 3/3
Syndication, comment s’y retrouver
Page contact en PHP 2/3
Editer plusieurs fichiers de syndication 1/3
Menu dépliant pour les rubriques
Page contact en PHP 1/3
Positionnement fixe... même avec Internet Explorer !
Javascript : n’oubliez pas Mac OS !
Installer un script PHP pour les nuls
Quand JavaScript est désactivé... 1/2
Editer plusieurs fichiers de syndication 2/3
Page contact en PHP 3/3
Quiz en PHP 1/3
Quiz en PHP 3/3
Afficher plusieurs flux RSS/Atom sur une page
La syndication de contenu RSS
Conseils aux rédacteurs
Lire nos fichiers de syndication
Présentation de l’espace rédacteurs
Ecrire ce qu’on veut dans SPIP
Astuce pour les images fréquemment utilisées
Afficher un fil RSS/Atom sur votre site 1/3
Ecrire ou modifier un article
Afficher un fil RSS/Atom sur votre site 2/3
Les raccourcis typographiques
Reprendre un document Word
Afficher un fil RSS/Atom sur votre site 3/3
Lecteur RSS/Atom pour votre site 1/2
Lecteur RSS/Atom pour votre site 2/2
Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom
Placer une image dans un article
Editez vos flux avec Fil_LE 1/2
Joindre un document à un article
Editez vos flux avec Fil_LE 2/2
Joindre un logo à un article
Création à distance d’un fichier de syndication
Abandonnons RSS 0.91 !
Exécuter un Javascript dans une page SPIP
Des fils RSS 1.0, RSS 2.0 et Atom 1.0 pour votre site SPIP
Accueil
Boite à Outils
Scripts PHP
Page Erreur 404 en PHP
Un visiteur qui voit le message type Erreur 404 du serveur est un visiteur de perdu, alors qu’avec une page personnalisée, on lui montre qu’on est soucieux de corriger le lien défectueux (ou on lui indique l’origine du problème) et on lui donne les informations pour s’orienter dans le site (par exemple afficher le plan du site).
Pour le webmestre un signalement d’un lien défectueux permet une correction rapide.
Tout dépend de ce que l’on souhaite : si on veut simplement indiquer au visiteur le plan du site [2], il n’est pas nécessaire de faire une page dynamique en PHP.
Cet article est pour ceux qui veulent aller plus loin et qui souhaitent des informations sur les erreurs d’accès à leurs pages. Le script proposé ici n’est pas parfait, mais il fait la synthèse de tout ce que j’ai pu trouver et essayer sur ce sujet [3], notamment après avoir abandonné l’envoi systématique d’un mail au Maître-Toile qui donnent de nombreux messages inutilisables (faux positifs qui ne sont pas en fait de vraies erreurs 404).
Si vous utilisez un serveur Apache (situation la plus fréquente), il faut mettre un fichier .htaccess à la racine du site. Ce fichier doit indiquer le lien vers la page d’erreur personnalisée, par exemple [4] :
ErrorDocument 404 /erreur_404.php
Notez que pour le bon fonctionnement, il vaut mieux ne pas utiliser de lien absolu, contrairement à ce qu’on peut trouver dans certains guides ; on préférera donc ErrorDocument 404 /erreur_404.php à ErrorDocument 404 http://www.mondomaine.com/erreur_404.php
En cas de difficulté, l’écriture et l’installation de ce fichier sont bien expliquées dans d’autres pages [5], cet article va donc se consacrer plutôt au script dans la page d’erreur 404.
Le script décrit ici est utilisé sur le site cyes.info. Avec ce script, l’envoi d’un message au Maître-Toile n’est pas automatique, mais commandé par le visiteur. Ce script peut être testé ici : Erreur 404 et l’ensemble du code peut être copié en bas de cette page [6]. Voici le détail de ce code :
<?php |
Par commodité d’écriture le script commence par la deuxième étape, car si $_POST [7] n’est pas vide, c’est que le visiteur a demandé l’envoi du message au Maître-Toile. On récupère ce message que l’on envoie avec la fonction mail(), et on signale que le message a bien été envoyé. La suite de la page, après le script comprend les boutons (vers la page d’accueil et retour page précédente) et le plan du site :
<form name="boutons"> |
Il n’est pas souhaitable de permettre le retour à la page précédente (qui est le premier affichage de la page Erreur 404 proposant l’envoi du message au webmestre), on va donc plutôt demander l’affichage de la page d’avant en donnant à $history la valeur 2.
else { |
Retour à la suite du script : si $_POST est vide (c’est le cas au premier affichage de la page), on affiche le bouton de retour vers la page précédente ($history prend la valeur 1). On initialise la variable $result à 1 et on cherche à reconnaître les "fausses erreurs 404" pour lesquelles on donne une autre valeur à $result, ce qui permettra d’afficher une réponse adaptée.
if ($result==0) { |
Si $result a la valeur 0, c’est que $SCRIPT_URI est vide. Peut-être s’agit-il quand même d’une erreur 404, alors on présente un lien vers la page contact pour permettre au visiteur de signaler le problème.
if ($result==1) { |
Si $result vaut 1, on propose au visiteur de signaler le problème au Maître-Toile, avec la possibilité d’ajouter une phrase de commentaire (C’est une option, on peut facilement supprimer du script cette possibilité de commentaire). Les données récupérées (la page demandée, les informations sur le visiteur) seront envoyées avec le message).
if ($result==2) { |
Si $result vaut 2, 3 ou 4, on indique au visiteur l’origine du problème. Voilà pour le script proprement dit et la réponse adaptée à chaque situation. La suite de la page, après le script, permet à l’internaute de se retrouver dans le site : boutons vers la page d’accueil, retour page précédente et plan du site. Il y a bien 2 accolades de fermeture à la fin du code, il ne faut pas oublier qu’on en avait ouvert une, plus haut dans le script, après else.
[1] Cette page a été mise au point pour le site www.cyes.info, la page choix techniques présente aux webmestres les différentes techniques mises en œuvre pour ce site. Pour qu’une page de ce type fonctionne, elle doit avoir une extension .php ou .php3 et être placée sur un serveur interprétant le PHP. Cet article a été modifié le 20/11/04 pour améliorer le script.
[2] Voir par exemple la page Erreur 404 d’Atoute.
[3] Notamment Info d’une erreur 404, Pourquoi personnaliser ses pages d’erreur ? et Erreur 404 personnalisée.
[4] Dans cet exemple, la page est nommée "erreur_404.php" et est placée à la racine du site.
[5] Voir Quelques outils du webmaster (sur SNOF), Le fichier .htaccess (sur SPIP-Contrib), Apache - Les fichiers .htaccess (sur Comment Çà Marche) et Le fichier .htaccess (sur Webmaster HUB).
[6] Le code du script :
[7] Avant la version 4.12 de PHP, il faut utiliser $HTTP_POST_VARS à la place de $_POST
Bonjour
D’abord encore merci pour vos script. J’utilise celui de la page contact et celui ci, le tout avec SPIP.
Mais j’ai un petit souci.
J’ai mis votre script dans un squelette 404.html et je n’arrive pas à appeler ce squelette autrement qu’en mettant l’adresse absolue dans le fichier htaccess et en passant par un 404.php3 (je suis encore en version 1.8).
Et quand j’affiche cette page la ligne
if (!empty($SCRIPT_URI)) { echo "<p>La page <br /><strong>".$SCRIPT_URI."</strong><br /> que vous avez demandé n'existe pas ou plus ...</p>\n"; }
ne semble pas être interprétée.
Auriez-vous une idée de l’erreur que j’ai pu commettre ?
D’avance merci.
Bon j’avance : ça marche avec les page.php mais pas avec page.html ou page sans extension.
Une idée ?