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

  FORUM HardWare.fr
  Programmation
  PHP

  include et header qui cohabitent mal

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

include et header qui cohabitent mal

n°1241865
bepimaco
Festina lente
Posté le 08-11-2005 à 22:41:30  profilanswer
 

Je rencontre un bug que je n'arrive pas à comprendre.
 
J'ai un fichier PHP de traitement de données qui alimente une base MySQL puis se redirige vers une autre page. Ce fichier marche très bien si un des include de la page est remplacé par sa source. Dans le cas contraire, le traitement est bien effectué (mise à jour de la base), mais le header ne fonctionne pas, ce qui me donne une page vierge de tout code, donc blanche.
 
Ci dessous le code, et celui du fichier inclus.
include '../general/securisation.php';
 
Script PHP

Code :
  1. <?php
  2. /* Ce script permet le traitement des données sans affichage
  3. *  d'écrans intermédiaires. En cas d'erreur, une page affiche
  4. *  l'erreur en question*/
  5. // Déclaration du niveau d'autorisation requis pour cette page
  6. $autorisation = 4;
  7. $url = 'x.php';
  8. include '../general/securisation.php';
  9. // Déclaration des paramètres de connexion
  10. include '../general/connexion.php';
  11. // Connexion au serveur
  12. mysql_connect(hote, utilisateur, motdepasse) or die("erreur de connexion au serveur" );
  13. mysql_select_db(bdd) or die("erreur de connexion a la base de donnees" );
  14. // Récupération des paramètres
  15. $action = $_GET["action"] ;
  16. $id = $_GET["id"] ;
  17. // Suppression
  18. if ($action == 'supprimer'){
  19.  $requete ='DELETE from adherents WHERE id='.$id;
  20.  $resultat = mysql_query($requete);
  21.  if(!$resultat) {
  22.   echo 'Erreur lors de la suppression dans la base de
  23.    donn&eacute;es. />';
  24.  }
  25.  else {
  26.   mysql_close();
  27.   header('location: listes.php');
  28.   exit();
  29.  }
  30. }
  31. // Archivage
  32. if ($action == 'archiver'){
  33. // Sélection des informations dans la première table
  34.  $requete = 'SELECT id, nom, prenom, unite, numad, naissance, adresse,
  35.   cp, ville, tel1, tel2, tel3, email, email2, commentaires
  36.   FROM adherents WHERE id="'.$id;
  37.  $resultat = mysql_query($requete);
  38.  while($ligne = mysql_fetch_array($resultat)){
  39.   $id = $ligne[0];
  40.   $nom = $ligne[1];
  41.   $prenom = $ligne[2];
  42.   $unite = $ligne[3];
  43.   $numad = $ligne[4];
  44.   $naissance = $ligne[5];
  45.   $adresse = $ligne[6];
  46.   $cp = $ligne[7];
  47.   $ville = $ligne[8];
  48.   $tel1 = $ligne[9];
  49.   $tel2 = $ligne[10];
  50.   $tel3 = $ligne[11];
  51.   $email1 = $ligne[12];
  52.   $email2 = $ligne[13];
  53.   $commentaires = $ligne[14];
  54.  }
  55. // Insertion des informations dans la table d'archive
  56.  $requete1 = "INSERT  INTO archivead (nom, prenom, unite, numad, naissance,
  57.   adresse, cp, ville, tel1, tel2, tel3, email, email2, commentaires)
  58.   VALUES ( '$nom', '$prenom', '$unite', '$numad', '$naissance', '$adresse',
  59.   '$cp', '$ville', '$tel1', '$tel2', '$tel3', '$email1', '$email2','$commentaires')";
  60.  $requete2 ='DELETE from adherents WHERE id='.$id;
  61.  $resultat1 = mysql_query($requete1);
  62.  $resultat2 = mysql_query($requete2);
  63.  if(!$resultat1 || !$resultat1) {
  64.   echo 'Erreur lors de l\'insertion dans la base de
  65.    donn&eacute;es. />';
  66.  }
  67.  else {
  68.   mysql_close();
  69.   header('location: listes.php');
  70.   exit();
  71.  }
  72. }


 
Fichier inclus

Code :
  1. <?php
  2. session_start();
  3. if(!isset($_SESSION['login'])) {
  4.  header('location: id.php?url='.$url);
  5.  exit;
  6. }
  7. $niveau = ($_SESSION['niveau']);
  8. if($niveau < $autorisation) {
  9.  header('location: red.php?url='.$url);
  10.  exit;
  11. }
  12. ?>


 
Je précise que sur les scripts PHP ne faisant pas appel à la fonction header tout se passe sans problèmes


Message édité par bepimaco le 08-11-2005 à 22:43:12

---------------
Bepimaco
mood
Publicité
Posté le 08-11-2005 à 22:41:30  profilanswer
 

n°1241971
sielfried
Posté le 09-11-2005 à 09:54:36  profilanswer
 

Je comprends pas trop. Ton include est fait en tout début de script, et pourtant tu dis

Citation :

le traitement est bien effectué (mise à jour de la base), mais le header ne fonctionne pas, ce qui me donne une page vierge de tout code, donc blanche.

. Pour moi là si y'a un header qui se fait via ton securisation.php, y'a aucun traitement qui s'effectue avant. :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1241993
bepimaco
Festina lente
Posté le 09-11-2005 à 10:30:17  profilanswer
 

Le premier include permet de vérifier si un utilisateur a le droit d'afficher la page. S'il ne l'a pas, il est redirigé vers une autre page. Jusque là, tout va bien et tout fonctionne.
 
En revanche, si l'utilisateur dispose des droits nécessaires, le script PHP se déroule jusqu'au bout. A la ligne 82, il devrait y avoir redirection vers une autre page. Mais cette redirection n'est pas effectuée. Le résultat est une page totallement blanche : normal puisqu'aucune sortie HTML n'est effectuée.
 
Ma question, pourquoi cette redirection ne fonctionne pas si la fonction include de la ligne 9 est là, alors qu'il n'y a aucun problème si le code est développé ?


---------------
Bepimaco
n°1242037
omega2
Posté le 09-11-2005 à 11:22:53  profilanswer
 

Ca a souvent été dit sur le forum : il faut toujours mettre le chemin complet quand on fait une redirection par un header.
EDIT : D'ailleur, t'as eu de la chance que ton premier header de redirection fonctionne.


Message édité par omega2 le 09-11-2005 à 11:24:07
n°1242090
bepimaco
Festina lente
Posté le 09-11-2005 à 12:15:48  profilanswer
 

merci de cette précision, mais ce n'est apparement pas le problème ...


Message édité par bepimaco le 09-11-2005 à 12:18:27

---------------
Bepimaco
n°1242152
sielfried
Posté le 09-11-2005 à 13:17:56  profilanswer
 

Si tu mets un echo entre le header (ligne 82) et le exit, il te l'affiche ? Et l'affichage reste ?


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

  include et header qui cohabitent mal

 

Sujets relatifs
Include => décalage du menuJ'ai un soucis avec la fonction "header"...
Alignement header/colonne différents dans un DataGridUne forme d'include pour les news....
Include/Require en cascade et acces aux variablesTemplate PHPlib : Include();
Pb avec plusieurs include PHP sur une même pageInclude
fichier header, libraries .. je pige plusInclude depuis dossier parent
Plus de sujets relatifs à : include et header qui cohabitent mal


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