Bonjour,

Voila je me suis dit plutôt que de créer un fichier par erreur il fallait juste par exemple créer une page 400 pour gérer tout les erreurs 400. Donc il faudrait pouvoir stoker chaque message dans un tableau par exemple mais aussi une image en effet je compte en fonction du type d'erreur affiche une image. Je ne souhaite surtout pas faire appel a une requête sql, donc pas de bdd.

Pourquoi je fait appel a vous ? Je fait appel a vous par se que je voudrais que m'aidiez à structuré ma future page 400 et qui c'est peut être quel pourrait servir à d'autre peut être bien que sa existe déjà...

Ma page ressemble pour l'instant à sa:

<?php
    if(isset($type) && !empty($type)){

        $error_type = array(
            '401',
            '403',
            '404',
            '408'
        )

        if($type == ""){

            echo;

        }

    }

Sachant que $type et une variable qui est définit par d'autre page mais ce seras toujours un nombre. Exemple $type = 404; Mais ce n'est pas tout c'est fameuses pages peuvent définir une erreur 404 particulières avec la variable $type404 exemple $type404 = "chanteur"; Cette page servira pour mon site de musique.

Donc il faut dans un premier temps bien recuperer tout ses info et puis les traitées avant de renvoyer un message au visiteur autant dire que je me retrouve une nouvel fois face un gros aiguilleur et franchement j'ai bien envie de changer de wagon ^^

Si vous avez des articles, des tutoriels, des idées ou des propositions bref tout ce qui pourrait être utile par avance je vous remercie :)

17 réponses


vavoir
Auteur
Réponse acceptée

Bonjour,

Je enfin eu le temps de m'occuper de cette page et j'ai pu faire exactement se que je voulais faire. Je poste le code sa pourrait servir à d'autre. Noter qu'il faut juste compléter les tableau et bien pensé à renseigné la variable $type lorsque vous appellerez la page qui contiendras le code.

<?php

    if(isset($type) && !empty($type)){

        $error_type = array(
            '401'   => array(
                'type' => '401',
                'title' => '',
                'message'   => ''
            ),
            '403'   => array(
                'type' => '403',
                'title' => '',
                'message'   => ''
            ),
            '404'   => array(
                'type' => '404',
                'title' => 'ERREUR 404 (not found)',
                'message'   => 'page introuvable'
            ),
            '408'   => array(
                'type' => '408',
                'title' => '',
                'message'   => ''
            ),
        );

        if(array_key_exists($type, $error_type)){

            $et = array();

            foreach($error_type$type] as $name => $value){
                $et$name] = $value;
            }

            $type   = $et'type'];
            $title  = $et'title'];
            $message= $et'message'];

        }
?>
<h1><?php echo $title; ?></h1>
<p><?php echo $message; ?></p>
<?php
    }
    else{
?>
    <h1>ERREUR INTERNE</h1>
    <p>
        Nous somme désolé vous avez rencontrez une erreur mais nous ne sommes pas parvenu à la traité correctement.<br>
        Il est possible que nous intevenons sur notre site et se fait nous n'avons pas pu traité votre problème. Toute fois si cette erreur persiste
        merci de prévenir l'administrateur se site à l'aide du formulaire présent sur la page de contacte.
    </p>
    <p><a href="" >Revenir sur la page d'accueil >></a></p>
<?php
    }
?>

Hmm, je vois pas bien l'intérêt de ton truc mais bon, je vais te répondre sur la partie technique :

Tu peux faire un gros tableau indexé par le code de la réponse

$aHtmlCode = array(
    200 => array('message' => 'Ok', 'image' => 'ok.png'),
    404 => array('message' => 'Interdit', 'image' => 'interdit.png'),
    ...
);

et tester si la clé existe :

if (array_key_exists($type, $aHtmlCode)) {
    echo $aHtmlCode$type]'message'];
    ...
} else {
    // Code inconnu, j'affiche un message générique
}

Il y a plein d'autres solutions mais à toi de te creuser un peu la tête pour trouver la solution la plus adaptée à ton besoin mais aussi la plus adaptée à ton environnement de développement (si tu utilises un framework par exemple).

vavoir
Auteur

Bonjour @CaporalDead,
L’intérêt c'est d'avoir qu'un seul fichier plutôt qu'un fichier par erreur du coup je n'est qu'a créer deux fichiers un pour les erreur 400 et un autre pour les erreur 500. Je n’utilise pas de framework a ce jour j'ai réaliser le site entièrement à la main.

En tout cas merci beaucoup pour ton aide.

Ben pourquoi tu redirige pas tous tes erreurs vers la même page ^^.

vavoir
Auteur

Bonjour @luffysan,
C'est exactement se que je veux faire :)

Pourquoi ne pas tout simplement appeler le même fichier pour toute les erreurs et afficher un message différent selon le header de la page ?
La page d'erreur sera identifié par un header qui lui correspond tu auras donc un header 404 si c'est une page introuvable il te suffira donc d'afficher le message correspondant au header 404 c'est à dire Page introuvable par exemple.

Je vois pas pourquoi tu te casses la tête ^^ .

vavoir
Auteur

Bonjour @Xtr3me,

Tout simplement parce que j'ignore ce qu'est un "header" du moins en php. Du coup si c'est une solution plus simple et qui me permet d'arriver au même résultat je serais ravi d'apprendre.

Les pages possèdent toute un header (une entête) indiquant l'état de la page , s'il y a une erreur ou non tu peux par exemple avec les outils de développement intégrés à Google chrome/ Mozilla Firefox etc... voir l'entête des pages.
En PHP tu peux spécifier un header pour les pages mais tu peux très bien mettre une condition sur un header et donc afficher un message selon l'entête de la page.

Je te renvoie vers la documentation si tu veux en savoir un peu plus.

vavoir
Auteur

@Xtr3me merci beaucoup pour toutes ces informations utile.

Passe ton problème en résolu si tout est ok ^^

vavoir
Auteur

@Xtr3me Je passerais le sujet en résolu une fois que j'aurais posté le code de la page on ne sais jamais sa pourrait servir a d'autre. En attendant si il y a d’autre proposition n'hésitez pas.

@Xtr3me encore merci pour toutes ses information je t’avouerais que j'ai juste jeter un œil a la doc je regarderai plus attentives vendredi.

Je suis a l'heure actuel sur deux gros projet et le premier et la transformation de mon site personnel en site professionnel donc je refond complètement le design je corrige toutes les fautes je délocalise une grande partie des pages sur un autre sites en plus mon site de musique sur le quelque je travail arriver bientôt a son terme après 1 an de travail et tout sa en même temps :)

Ok pas de problème moi j'ai bientôt terminé un projet de E-commerce pour un particulier après 6 mois de travails , c'était long mais très instructif.

Pourquoi ne pas capturer tes pages en htaccess et les renvoyer sur des pages html ou php correspondant ?

Exemple ligne pour erreur 404 dans htaccess :

ErrorDocument 404 /404.html

Pour plus d'infos

L'avantage, c'est que tu pourras comptabiliser le nombre de click et la provenance des erreurs dans ton google analytic ;)

Il veut justement éviter cette méthode. Mais c'est sûr que si son but est de faire une gestion des erreurs, le .htaccess reste l'une des meilleures méthodes.

vavoir
Auteur

Bonjour @Xtr3me,

Je confirme je veut justement éviter cette méthode. Je viens de regardé un peu plus en détail la fiche du coup je m’aperçois que je connaissais un peu la fonction. J'ai déjà utilisé la fonction une fois pour une redirection

header('Location: http://www.example.com/');

Or se que je cherche a faire ici c'est de créer une page unique pour traiter toute les erreur 400.

Donc ce qu'il faut faire c'est déjà de bien recevoir le type d'erreur et en fessant un essai avec le .htaccess je suis parvenu à faire passer une variable get. Du coup sa ses fait j'ai pu trop de soucis à me faire de ce côter la ne me reste plus qu'a sécurisé les variable get et bien faire conditions et bien a afficher mes différent message.

Donc voici une première structure non fini et surtout <u>NON SECURISER</u> !!!

<?php
    $type = $_GET'type'];
    if(isset($type) && !empty($type)){

        $error_type = array(
            '401',
            '403',
            '404',
            '408'
        );

        if($type == "404"){

            echo $type;

        }

    }

Et pour seut qui ce demande comment j'ai fait pour le .htaccess voici le code

ErrorDocument 404 /l-adresse-de-mon-site.com/400.php?type=404

Simple non !

Oui mais avec le header tu pouvais mettre aussi une condition selon le type de header, une page 404 te renverras un header avec 404.
Si header("HTTP/1.0 404 Not Found")
Afficher tel message sur la page. Par exemple Page introuvable.
Sinon si header("HTTP/1.0 403 Forbidden")
Afficher tel message sur la page. Par exemple Accès interdit.

Etc...

vavoir
Auteur

@Xtr3me j'ai pas encore test mais y a un truc que je ne comprend pas c'est comme sa se transmet entre les pages ?