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

  FORUM HardWare.fr
  Programmation
  PHP

  Administration: probleme Session & Include

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Administration: probleme Session & Include

n°1133697
suomi
Posté le 28-06-2005 à 14:41:23  profilanswer
 

Bonjour à tous.
Malgrè beaucoup de topic à ce sujet, je n'arrive pas à résoude mon problème  :(  
j'ai en effet un message d'erreur que becoup d'entre nous connait bien:
Warning: session_start(): Cannot send session cache limiter- header already sent...
je sais que ce problème est du a une entête déja envoyé, ceci surement du au fait que j'inclus toutes mes pages dans une page php dont voici l'architecture:
 
Une page index.php qui inclut de nombreux fichiers en fonction du menu:

Code :
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  4. <title>********</title>
  5. <link rel="stylesheet" href="style.css" type="text/css">
  6. </head>
  7. <body>
  8. <div id="masthead">
  9.   <h1 id="siteName"><img src="images/D3.gif" width="733" height="44"></h1>
  10.   <div id="clock">
  11.     <?
  12.  $date = date("d-m-Y" );
  13.  $heure = date("H:i" );
  14.  Print("$date $heure" );
  15. ?>
  16. </div>
  17. </div>
  18. <!-- end masthead -->
  19. <div id="content">
  20.   <div id="breadCrumb">
  21.     <a href="index.php?page=accueil">Accueil</a> /
  22. <a href="index.php?page=faq">FAQ</a> /
  23. <a href="index.php?page=contact">Contacts</a> /
  24.   </div>
  25.   <!--<h2 id="pageName">Page Name</h2>-->
  26.   <div class="feature">
  27.     <?php
  28. if (!isset($_GET['page'])) $page= 'index'; else $page= $_GET['page'];
  29. switch($page)
  30. {
  31. /*MENU centre*/
  32. case 'accueil': include ('accueil.html');break;
  33. case 'faq': include ('faq.html');break;
  34. case 'contact':include ('contact.html');break;
  35. /*MENU*/
  36. case 'rechercher':include ('rechercher.php');break;
  37. case 'comparer':include ('comparer.html');break;
  38. case 'administration':include ('membre/login.htm');break;
  39. /*Insertion dans la base*/
  40. if (!isset($_GET['insertion'])) $insertion= 'index'; else $insertion= $_GET['insertion'];
  41. switch($insertion)
  42. {
  43. case 'Descendant':include ('insertion/insertion_descendant.html');break;
  44. case 'Sequence':include ('insertion/insertion_sequence.html');break;
  45. case 'Nom_alternatif':include ('insertion/insertion_id_alternatif.php');break;
  46. }
  47. ?>
  48.   </div>
  49.   <div class="story"></div>
  50. </div>
  51. <!--end content -->
  52. <div id="navBar">
  53.   <div id="search">
  54.    
  55.       <div align="center"><img src="images/logo-transparentsmall.gif" width="174" height="94">
  56.       </div>
  57.    
  58.   </div>
  59.   <div id="sectionLinks">
  60.     <ul>
  61.       <li><a href="index.php?page=rechercher">Rechercher</a></li>
  62.       <li><a href="#">Comparer</a></li>
  63.       <li><a href="index.php?page=inserer">Insérer</a></li>
  64.   <li><a href="index.php?page=mise_a_jour">Mise à jour</a></li> 
  65.       <li><a href="#">Administration</a></li> 
  66.     </ul>
  67.   </div>
  68.   <div id="advert">
  69.     <div align="center"> Centre de Versailles</div>
  70.   </div>
  71.  
  72. </div>
  73. <div align="center">
  74.   <!--end navbar -->
  75. </div>
  76. </body>
  77. </html>


Cette page est donc la page principale de mon site ou j'inclus de nombreuses pages afin d'eviter de recharger celle-ci à chaque fois ou d'utiliser des cadres. Mon probleme arrive lorsque qu'on clic sur Administration de mon menu, on arrive sur un formulaire simple:
login.htm:

Code :
  1. <form action="login.php?page=admin" method='post'>
  2. <table align="center" border="0">
  3.   <tr>
  4.     <td>Login :</td>
  5.     <td><input type="text" name="login" maxlength="250"></td>
  6.   </tr>
  7.   <tr>
  8.     <td>Password</td>
  9.     <td><input type="password"name="pass" maxlength="10"></td>
  10.   </tr>
  11.   <tr>
  12.     <td colspan="2" align="center"><input type="submit" value="log in"></td>
  13.   </tr>
  14. </table>
  15. </form>


 
qui renvoit à:
login.php

Code :
  1. <?
  2. $login=$_POST['login'];
  3. $pass=$_POST['pass'];
  4. // pensez a ouvrir une connexion vers mysql ici
  5. //require("connect.php" );
  6. define ("NOM", "***" );
  7. define ("PASSE","***" );
  8. define ("SERVEUR","localhost" );
  9. define ("BASE","****" );
  10. $connexion = mysql_pconnect(SERVEUR,NOM,PASSE);
  11. mysql_select_db(BASE,$connexion);
  12. if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
  13.   extract($_POST);
  14.   // on recupère le password de la table qui correspond au login du visiteur
  15.   $sql = "select pwd from tbl_user where login='$login'";
  16.   $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  17.   $data = mysql_fetch_assoc($req);
  18.   if($data['pwd'] != $pass) {
  19.    echo '<p>Mauvais login / password. Merci de recommencer</p>';
  20.    include('login.htm'); // On inclus le formulaire d'identification
  21.     exit;
  22.   }
  23.   else {
  24. session_start();
  25. $_SESSION['login'] = $login;
  26.     echo 'Vous etes bien logué';
  27.     // ici vous pouvez afficher un lien pour renvoyer
  28.     // vers la page d'accueil de votre espace membres
  29. echo '<a href="test.php">CEci est un test</a>';
  30.   } 
  31. }
  32. else {
  33.   echo '<p>Vous avez oublié de remplir un champ.</p>';
  34.    include('login.htm'); // On inclut le formulaire d'identification
  35.    exit;
  36. }
  37. ?>


 
Je sais qu'il ne faut aucun balise html ou echo ou print avant Session pour ne pas envoyer de header. Cependant ici c'est un peu different car j'inclus login.php dans une autre page php qui forcement a deja envoyé des donnés. Comment pourrais-je faire en sorte que ceci reste compatible sans pour autant tout changer dans l'infrastructure des mes pages?
Y-a t'il moyen de restructurer index.php afin de pouvoir faire en sorte que ça marche?
 
Merci pour vos conseils  :jap:


Message édité par suomi le 28-06-2005 à 14:48:53
mood
Publicité
Posté le 28-06-2005 à 14:41:23  profilanswer
 

n°1133700
FlorentG
Unité de Masse
Posté le 28-06-2005 à 14:42:09  profilanswer
 

Y'a tout simplement une grave erreur de design dans tes scripts ;)


---------------
last.fmflickr
n°1133712
suomi
Posté le 28-06-2005 à 14:47:34  profilanswer
 

Erreur de design... hum, tu peux approfondir un peu stp...

n°1133720
FlorentG
Unité de Masse
Posté le 28-06-2005 à 14:51:51  profilanswer
 

T'as mixé PHP & HTML, c'est pas bien, y'a aucune séparation entre les différentes couches :(


Message édité par FlorentG le 28-06-2005 à 14:51:58

---------------
last.fmflickr
n°1133728
suomi
Posté le 28-06-2005 à 14:56:35  profilanswer
 

Bon je suis d'accord que mélanger html et php c'est pas génial, surtout depuis mon problme de Session. Cependant comment je pourrais faire? Si je mets tous en php, avec des echo partout, le problème est le même j'imagine.
J'utilise une feuille de style css pour disposer mes différents blocs, comment faire alors pour dissocier mon php de mon html?  :??:

n°1133730
soju
One shot !
Posté le 28-06-2005 à 14:57:20  profilanswer
 

ya moyen de jouer avec les fonctions de bufferisation, mais comme dit FlorentG vaudrait mieux revoir la logique de tes scripts

n°1133733
FlorentG
Unité de Masse
Posté le 28-06-2005 à 14:58:43  profilanswer
 

Via un système de template


---------------
last.fmflickr
n°1133738
yoyo354
Yoyo, le roi du ...
Posté le 28-06-2005 à 15:00:18  profilanswer
 

[:akt]


---------------
http://yoyo.eurotchat.net -> Wednesday 14 September a 02:00:01 up 43 days, 11:47,  2 users,  load average: 0.07, 0.03, 0.00
n°1133823
suomi
Posté le 28-06-2005 à 15:54:27  profilanswer
 


 :cry:  
 
Bon ben je ne connais pas le méchanisme des templates, ça a l'air poussé... je vais lire de la doc la dessus, si c'est la seule solution...
 :jap:

n°1133846
soju
One shot !
Posté le 28-06-2005 à 16:24:00  profilanswer
 

suomi a écrit :

si c'est la seule solution...

non pas la seule solution, en attendant tu peux par exemple revoir ta gestion de session et mettre un session_start au debut de index.php


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

  Administration: probleme Session & Include

 

Sujets relatifs
Probleme de référence sur des objetsflux rss: probleme je comprend pas
Probleme avec GROUP BYProblème de reconstruction de requete en PROC
Problème de connexion pour écriture sur bd paradoxproblème d'objet
[php-mySQL] recherche dans une base mySQL problème d'accentsprobleme Install
Probleme d'image aleatoire et lien (debutant)Problème PHP sous windows
Plus de sujets relatifs à : Administration: probleme Session & Include


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