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 :
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <title>********</title>
- <link rel="stylesheet" href="style.css" type="text/css">
- </head>
- <body>
- <div id="masthead">
- <h1 id="siteName"><img src="images/D3.gif" width="733" height="44"></h1>
- <div id="clock">
- <?
- $date = date("d-m-Y" );
- $heure = date("H:i" );
- Print("$date $heure" );
- ?>
- </div>
- </div>
- <!-- end masthead -->
- <div id="content">
- <div id="breadCrumb">
- <a href="index.php?page=accueil">Accueil</a> /
- <a href="index.php?page=faq">FAQ</a> /
- <a href="index.php?page=contact">Contacts</a> /
- </div>
- <!--<h2 id="pageName">Page Name</h2>-->
- <div class="feature">
- <?php
- if (!isset($_GET['page'])) $page= 'index'; else $page= $_GET['page'];
- switch($page)
- {
- /*MENU centre*/
- case 'accueil': include ('accueil.html');break;
- case 'faq': include ('faq.html');break;
- case 'contact':include ('contact.html');break;
- /*MENU*/
- case 'rechercher':include ('rechercher.php');break;
- case 'comparer':include ('comparer.html');break;
- case 'administration':include ('membre/login.htm');break;
- /*Insertion dans la base*/
- if (!isset($_GET['insertion'])) $insertion= 'index'; else $insertion= $_GET['insertion'];
- switch($insertion)
- {
- case 'Descendant':include ('insertion/insertion_descendant.html');break;
- case 'Sequence':include ('insertion/insertion_sequence.html');break;
- case 'Nom_alternatif':include ('insertion/insertion_id_alternatif.php');break;
- }
- ?>
- </div>
- <div class="story"></div>
- </div>
- <!--end content -->
- <div id="navBar">
- <div id="search">
-
- <div align="center"><img src="images/logo-transparentsmall.gif" width="174" height="94">
- </div>
-
- </div>
- <div id="sectionLinks">
- <ul>
- <li><a href="index.php?page=rechercher">Rechercher</a></li>
- <li><a href="#">Comparer</a></li>
- <li><a href="index.php?page=inserer">Insérer</a></li>
- <li><a href="index.php?page=mise_a_jour">Mise à jour</a></li>
- <li><a href="#">Administration</a></li>
- </ul>
- </div>
- <div id="advert">
- <div align="center"> Centre de Versailles</div>
- </div>
-
- </div>
- <div align="center">
- <!--end navbar -->
- </div>
- </body>
- </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 :
- <form action="login.php?page=admin" method='post'>
- <table align="center" border="0">
- <tr>
- <td>Login :</td>
- <td><input type="text" name="login" maxlength="250"></td>
- </tr>
- <tr>
- <td>Password</td>
- <td><input type="password"name="pass" maxlength="10"></td>
- </tr>
- <tr>
- <td colspan="2" align="center"><input type="submit" value="log in"></td>
- </tr>
- </table>
- </form>
|
qui renvoit à:
login.php
Code :
- <?
- $login=$_POST['login'];
- $pass=$_POST['pass'];
- // pensez a ouvrir une connexion vers mysql ici
- //require("connect.php" );
- define ("NOM", "***" );
- define ("PASSE","***" );
- define ("SERVEUR","localhost" );
- define ("BASE","****" );
- $connexion = mysql_pconnect(SERVEUR,NOM,PASSE);
- mysql_select_db(BASE,$connexion);
- if(isset($_POST) && !empty($_POST['login']) && !empty($_POST['pass'])) {
- extract($_POST);
- // on recupère le password de la table qui correspond au login du visiteur
- $sql = "select pwd from tbl_user where login='$login'";
- $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
- $data = mysql_fetch_assoc($req);
- if($data['pwd'] != $pass) {
- echo '<p>Mauvais login / password. Merci de recommencer</p>';
- include('login.htm'); // On inclus le formulaire d'identification
- exit;
- }
- else {
- session_start();
- $_SESSION['login'] = $login;
- echo 'Vous etes bien logué';
- // ici vous pouvez afficher un lien pour renvoyer
- // vers la page d'accueil de votre espace membres
- echo '<a href="test.php">CEci est un test</a>';
- }
- }
- else {
- echo '<p>Vous avez oublié de remplir un champ.</p>';
- include('login.htm'); // On inclut le formulaire d'identification
- exit;
- }
- ?>
|
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
Message édité par suomi le 28-06-2005 à 14:48:53