Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2745 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Header qui plante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Header qui plante

n°1774219
Sephirius2
Posté le 18-08-2008 à 17:53:10  profilanswer
 

Salut (oui encore moi et pr encore 1 an au moins...)
 
Toute ma page Index.php est composé d'include dont une pour la partie principale dans laquelle s'affiche le contenu du site.
Afin de ne pas tenter les Hackers de 10 ans et moins je voulais sécuriser cette partie en utilisant le code de NazzTazz publié dans la partie "blabla@php | faq et bonnes pratiques"
 
Voici le code publié par NazzTazz:

Code :
  1. <?php
  2.     $pages_ok = array('accueil', 'categorie', 'produit');
  3.     if (in_array($_GET['page'], $pages_ok)) {
  4.          include $_GET['page'].'.php';
  5.       } else {
  6.          header ('HTTP/1.1 404 Not Found');
  7.          die();
  8.       }
  9. ?>


 
Mtnt voici le mien adapté à mes besoins:

Code :
  1. <?php
  2.   // On définit le tableau contenant les pages autorisées
  3.   // ----------------------------------------------------
  4.    $pageOK = array( 'accueil' => 'ACCUEIL/accueil.php',
  5.    'agenda' => 'agenda.php', 'actualite' => 'actualite.php');
  6.   // On teste que le paramètre d'url existe et qu'il est bien autorisé
  7.   // -----------------------------------------------------------------
  8.    if ( in_array($_GET['page'], $pageOK)) {
  9.      include $_GET['page'].'.php'; 
  10.    } else {
  11.      header ('HTTP/1.1 404 Not Found');
  12.      die ();
  13.    }
  14.   ?>


 
A titre d'info j'ai remplacé le code ci dessous par celui ci dessus  

Code :
  1. <?php
  2.   // On définit le tableau contenant les pages autorisées
  3.   // ----------------------------------------------------
  4.    $pageOK = array(
  5.        'accueil' => 'ACCUEIL/accueil.php',
  6.        'agenda' => 'AGENDA/agenda.php',
  7.        'actualité' => 'ACTUALITE/actualite.php',
  8.        'publications' => 'PUBLICATIONS/publications.php',
  9.        'comite' => 'COMITE/comite_contact.php',
  10.        'presentation' => 'CDH/cdh_presentation.php',
  11.        'local' => 'CDH/LOCAL/cdh_local.php',
  12.        'national' => 'CDH/NATIONAL/cdh_national.php',
  13.        'arrondissement' => 'ARRONDISSEMENT/arrondissement.php',
  14.        'forum' => 'FORUM/phpbb2/index.php',
  15.        'galerie' => 'GALERIE/index.php',
  16.        'news' => 'newsletter/inscription.php',
  17.        'liens' => 'LIENS/liens.php',
  18.        'contacts' => 'CONTACTS/contacts.php',
  19.        'apropos' => 'EXTRANET/apropos.html',
  20.        );
  21.   // On teste que le paramètre d'url existe et qu'il est bien autorisé
  22.   // -----------------------------------------------------------------
  23.    if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
  24.    include($pageOK[$_GET['page']]);   // Nous appelons le contenu central de la page
  25.    } else {
  26.    include('ACCUEIL/accueil.php');   // Page par défaut quant elle n'existe pas dans le tableau
  27.    }
  28.   ?>


 
pour appeler mes pages j'utilise l'URL au format suivant: index.php?page=accueil
 
Le problème ? PHP me retourne une erreur à chaque fois. J'ai dj essayé pas mal de solution mais apparemment aucune ne convient... Voici le message que je reçois:  Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\CDH_V4.0\Index.php:34) in C:\wamp\www\CDH_V4.0\corps.php on line 23
 
Une idée pr résoudre ce problème?

mood
Publicité
Posté le 18-08-2008 à 17:53:10  profilanswer
 

n°1774222
infoman64
JE SUIS LA POUR TOI MON AMI
Posté le 18-08-2008 à 17:58:37  profilanswer
 

quand il te marque ca c'est que tu fait affiche quelque chose avant ton header,
tu as rien qui est affiché avant le message d'erreur
(genre un echo qui traine, ou une page affiché avec un includ)
si c'est ca ben alors supprime le , car il ne faut rien afficher avant un header().
 
sinon je comprend pas trop la structure de ta page,avec tous tes petits morceaux de code, je sais pas quel y est ou pas?

Message cité 1 fois
Message édité par infoman64 le 19-08-2008 à 12:01:05
n°1774399
cvb
Posté le 19-08-2008 à 11:42:06  profilanswer
 

infoman64 a écrit :

quand il te marque ca,
tu as rien qui est affiché avant le message d'erreur
(genre un echo qui traine, ou une page affiché avec un includ)
si c'est ca ben alors supprime le , car il ne faut rien afficher avant un header().
 
sinon je comprend pas trop la structure de ta page,avec tous tes petits morceaux de code, je sais pas quel y est ou pas?


 
 
+ 1, il ne faut rien envoyer au navigateur. Un ou des espaces suffisent également avant l'ouverture ou aprés la  fermeture des balises <?php , ?>, pour voir apparaître ce genre de message. Il faut qu'il passe tout les fichiers qu'il intégre en revue, qu'il regarde les echo, comme tu dis mais aussi les blanc qui peuvent faire planter un programme lamentablement...:/  
 

n°1778232
grosbin
OR die;
Posté le 27-08-2008 à 12:49:26  profilanswer
 

De toutes façons, débuter par un ob_start(); ne tue personne
( et permet notamment de balancer toutes les sessions,headers,cookies que tu veux dans le cheminement de ton code ) :D


---------------
Photos Panoramiques Montagnes Haute Savoie

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Header qui plante

 

Sujets relatifs
[RESOLU] passage de header HTML -> CGIheader et textarea
Comment faire un makefile qui retrouve les header précompilés dans lesImplémentation d'une classe dans un header ?
Warning: Cannot modify header information - headers already sent byBannière avec largeur automatique dans le header
Decalage du header sous SafariCommantaire / antispamm / header JPG
open file en php plante sporadiquement 
Plus de sujets relatifs à : Header qui plante


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR