impossible de lire les pages de l'interface administrateur en ligne

Petit nouveau ! | 3 Messages

07 sept. 2008, 00:10

Bonsoir

J'ai pris soin de vérifier sous Localhost si mes pages index et modif de l'interface administrateur marchaient avant de les mettre en ligne.

J'ai fait mon site en php et en includes avec une base de données où j'ai mis ma table login et password.

Voici l'erreur qu'on me met:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home.10.34/stephanib/www/index.php:6) in /home.10.34/stephanib/www/administrateur/index.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home.10.34/stephanib/www/index.php:6) in /home.10.34/stephanib/www/administrateur/index.php on line 2
Identification de l'administrateur
je sais qu'on ne doit pas mettre d'espace ni sauter de ligne en début de code et que les chaînes de caractères sont interdites avant le Doctype sauf que je n'ai pas de Doctype sur ma page puisque c'est une autre page qui appelle ma page index et ma page modif de l'administrateur.

Y a t-il quelqun qui pourraient m'aider si je lui montre mon code?

Merci d'avance.

Valentine42_7

Eléphant du PHP | 447 Messages

07 sept. 2008, 07:47

Bonjour Valentine,

commence par ajouter ton code dans ce topic, tu gagneras du temps si tu veux que quelqu'un te donne un avis dessus... :wink:


Et puis bienvenue!! :)
Probably (only a) Human Problem?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

07 sept. 2008, 13:51

Dans le message que tu reçois, on lit :
headers already sent by (output started at /home.10.34/stephanib/www/index.php:6)
Donc l'erreur se trouve à la ligne n°6 du fichier index.php qui est la page d'accueil de ton site et non au niveau de la page où se trouve le session_start().

Je rappelle qu'il ne faut pas faire d'echos avant l'appel du script qui contient session_start() si cet appel est effectué par un include.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Petit nouveau ! | 3 Messages

07 sept. 2008, 16:31

Voici mon code:
3 pages: la page index.php qui appelle les pages et les pages de l'administrateur: index.php et modif.php

n°1:la page des includes
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml="lang"lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<meta name="description" content="Stéphanie G, webmaster, webdesigner vous invite à découvrir son site axé sur la recherche d'un stage"/>
	<meta name="webmaster,webdesigner" content="emploi-web-webmaster-webdesigner-création de sites web-région parisienne-Créteil-Paris"/>
	<title>Stéphanie GENON, webmaster, webdesigner</title>
	<link href="style.css" type="text/css" rel="stylesheet"/>
    
	<script type="text/javascript" src="administrateur/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
	<script type="text/javascript">
	tinyMCE.init({
	mode:"exact",//textareas
	elements:"texte,titre",
	theme:"simple",
	forced_root_block:false,
	force_br_newlines:true,
	force_p_newlines:false
	});
	</script>

    <script type="text/javascript" src="swfobject.js"></script>
</head>

<body>
<div id="pere">
<div id="bandeau">

				<?php
				include('bandeau.php');
				?>

</div><!--fermeture bandeau-->      	
        
<div id="menu">
				
				<?php
				include('menu.php');
				?>
                
</div><!--menu-->
       
        
<div id="gauche">
				<?php
				include('gauche.php');
				?>
</div><!--fermeture gauche-->
    
            
<div id="text">
				<?php
				if(!isset ($_GET ['page'] ) ){
				
					include('accueil.php');
					}
					
					else{
					
					switch($_GET['page']){
					
						case'competences_web':
						include('competences_web.php');
						break;
						
						case'galerie':
						include('galerie.php');
						break;
						
						case'parcours_professionnel':
						include('parcours_professionnel.php');
						break;
						
						case'niveau_etudes':
						include('niveau_etudes.php');
						break;
						
						case'centres_interet':
						include('centres_interet.php');
						break;
						
						case'contact':
						include('contact.php');
						break;
						
						case'mentions_legales':
						include ('mentions_legales.php');
						break;
						
						case 'administrateur_index';
						include ('administrateur/index.php');
						break;
						
						case 'administrateur_modif';
						include ('administrateur/modif.php');
						break;
						
						default:include('accueil.php');
						}
						}
																								
				?>
        	            
 </div> <!-- fin div text -->
    
	   	
					
<div id="pieds">
               <?php
			   include('pieds.php');
			   ?>
			   
                   
</div> <!--fermeture pieds-->  				
	  
  		
</div><!--fermeture pere-->

</body><!--fermeture body-->
</html>
n°2:page index de l'administrateur
<?php 
session_start();
$nb=0;
$mess="";
include('connexion.php');
echo $_POST["identifiant"];
if (isset($_POST["identifiant_de_connexion"])) {
	$login = mysql_real_escape_string($_POST['identifiant_de_connexion']);
	$password = sha1($_POST['mot_de_passe']);
	$q=" SELECT * FROM `login` WHERE `login` = '$login' AND `password` = '$password' ";//appel de la table où j'ai enregistré login et mot de passe.
	//echo $q.'<br>';
	$resultat = mysql_query($q);
	$nb = mysql_num_rows($resultat);
	//echo 'NB : '.$nb;	
	if($nb==1) {	
		$_SESSION['admin']='ok';
		header('Location:index.php?page=administrateur_modif');
	}
}
if ($nb == 0) {
	$mes='<span class="visiteur">Veuillez entrer un login et un mot de passe</span>';
}
?>

<h1>Identification de l'administrateur</h1>
<?php echo $mes;
?>
	<br />	<br />	
<form id="form2" name="form2" action="index.php?page=administrateur_index" method="post">
<!--action="index.php?page=contact_post"-->

<fieldset>
    
    	<legend>Identification</legend>
        
        <label for="login" class="login">Login</label>
        <input type="text" id="login" name="identifiant_de_connexion" size="20" maxlength="20" class="espace_vertical"/>
        
        <label for="mot_de_passe" class="login">Mot de passe</label>
        <input type="text" id="mot_de_passe" name="mot_de_passe" size="20" maxlength="20" class="espace_vertical" />
        
				<label for="submit2" class="login">&nbsp;</label>
           		<input type="submit" id="submit2" name="submit2" value="Valider"class="espace_vertical"  />
                <input type="reset" name="reset2" value="Effacer" class="espace_vertical"/>            
    
    </fieldset>

</form>

n°3:la page modif de l'administrateur

<?php
session_start();
if (!isset($_SESSION['admin'])){// si la session admin n'existe pas, càd que l'administrateur n'a pas composé le login et mot de passe
	header('Location:index.php?page=administrateur_index'); //alors il est renvoyé sur la page index la vraie avec les includes
}
include('connexion.php');//on lie cette page à la bddcv
if (isset($_POST['deconnexion'])){//si le bouton déconnexion existe
			unset($_SESSION['modif']);//on ferme la session modif
			header('Location:index.php?page=accueil');//puis on renvoie sur la page accueil
}
?>
<h1>Modification d'une page ou d'un titre</h1>
<br />

<div id="deconnexion">


<!--1er formulaire=bouton de déconnexion-->

	<form id="deconnexion" name="deconnexion" action="index.php?page=administrateur_modif" method="post">

		<label for="deconnexion" >&nbsp;</label>
		<input type="submit" name="deconnexion" class="deconnexion" value="déconnexion"/>
		<br />

	</form>

</div>

<div id="choix_page">

<!--2eme formulaire=menu déroulant des différentes pages-->	
	<form id="choix_page" name="choix_page" action"administrateur/index.php?page=admistrateur_modif" method="post" >
		
        <br /><br />
		<fieldset><legend>Page à modifier</legend>
        
		<?php
		//on choisit la page dans le menu déroulant
		$reqPage=mysql_query("SELECT nom_page FROM titres_textes ");
		?>
		
<!--formulaire menu déroulant-->
<label for="menu_deroulant" class="menu_deroul"></label>		
<select name="menu_deroulant" id="menu_deroulant" class="select">			
			
		<?php
				
		while ($result_page=mysql_fetch_array($reqPage)){//va chercher dans le tableau le résultat des  pages entrées dans le champ:nom_page

$select='';
if(isset ($_POST['menu_deroulant'])){
if($result_page['nom_page']==$_POST['menu_deroulant']){
$select=selected;
}

}
		
		echo '<option>'.$result_page ['nom_page'].'</option>';//menu déroulant s'ouvre avec <option>=> écrit le résultat de la page qui correspond dans le tableau associatif
	
		}
		?>
		</select>	
        
        <!--creation du bouton valider-->	
		<label for="valider" class="calage">&nbsp;</label>
		<input type="submit" name="valider" id="submit" class="champs" value=" valider"  />
	    
				
		</fieldset>
	
	</form>
<br /><br />
		
</div><!--fin div choix page-->


<?php

if (isset($_POST['valider'])){// si on a valider une page du menu déroulant 

$reqmodif=mysql_query("SELECT * FROM titres_textes WHERE nom_page='$_POST[menu_deroulant]'");//alors va chercher le menu déroulant à un champ nom_page 
$tabl_modif=mysql_fetch_array($reqmodif);

}

		
?>
<!--création d'une valeur cachée: on a que le menu déroulant avec les différentes pages-->
<?php
//$mess='';
if(isset($_POST['valeur_cachee'])){
$reqMAJ=mysql_query("UPDATE titres_textes SET titre='$_POST[titre]',texte='$_POST[texte]' WHERE nom_page='$_POST[valeur_cachee]'");
	if($reqMAJ==1){
	//echo 'bla';
		echo'<span class="visiteur">la modification a été enregistrée</span>';
	}else{
		echo'la modification a échoué';
	}
}

?>
<div id="modif_page">

<?php //on répète la requête du sessus
if(isset ($_POST['menu_deroulant'])){
$reqmodif=mysql_query("SELECT * FROM titres_textes WHERE nom_page='$_POST[menu_deroulant]'");//alors va chercher le menu déroulant à un champ nom_page 
$tabl_modif=mysql_fetch_array($reqmodif);
?>

<form id="form_modif" action="index.php?page=administrateur_modif" method="post" >
	<fieldset><!--3eme formulaire avec cases: titre et texte +bouton modifier-->
	
			<legend>Modifier la page et le titre de la page?</legend>
				<label for="titre" class="titre">Titre</label>
				
	            <textarea rows="5" cols="40" name="titre" id="titre" class="champs" >
				<?php echo $tabl_modif['titre'];?></textarea>
<br />
		
				<label for="texte" class="titre">Texte</label>
       		 	<textarea rows="20" cols="40" name="texte" id="texte" class="champs" >
				<?php echo $tabl_modif['texte'];?></textarea>
                <br />
		
				<label for="modifier" class="titre">&nbsp;</label>
				<input type="submit" name="valider" id="submit" class="champs" value=" modifier"  />
	    		<input type="hidden" name="valeur_cachee" id="valeur_cachee" value="<?php echo $_POST['menu_deroulant'];?>"/>
	</fieldset>

</form>	

<?php
}
?>

</div>

Merci de votre aide

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

07 sept. 2008, 19:14

Bon si t'as pas compris mon explication précédente, voici une seconde : Enlève toutes les instructions "session_start()" qui se trouvent dans les autres pages et met une seule dans ta page "index.php" du site principal à la première ligne avant tout affichage HTML.
Car comme j'ai dit, on ne peux pas faire des affichages HTML ou des echos avant un include() qui appelle une page qui commence par "session_start()"
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Petit nouveau ! | 3 Messages

07 sept. 2008, 19:37

Merci Sadeq et désolée de ne pas avoir compris tes explications.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

07 sept. 2008, 20:07

Modération :
GENON, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer