culture [PHP] erreur session start

Statut
La discussion n'est pas ouverte à d'autres réponses

Roooh

Membre
Salut, j'ai un certain probleme.

J'ai un site en local avec la fonction session start avant tout code HTML qui marche très bien.

Mais quand j'ai uploadé mes fichiers de codes, ceux ci m'affiche une erreur dans le navigateur

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/sandraca/public_html/administration.php:2) in /home/sandraca/public_html/administration.php on line 2

A la ligne 2 c'est :
PHP:
 
Dernière édition:
Salut,

Si tu n'as pas de code intentionnellement généré avant le session_start(), c'est que tu as une erreur qui est générée avant dans ton code. Vérifie que tu n'as pas de problème de ce côté. Selon la version de PHP, certaines fonctions peuvent être devenues obsolètes et déclencher une erreur E_DEPRECATED.
 
Le doctype étant un texte, faut pas chercher plus loin, ça vient de là :sourire-4e62: Il ne faut vraiment aucun texte (généré par PHP ou écrit en dur) avant le session_start(). De même pour la création de cookies.
 
Merci du conseil, ça a l'air de marcher. Sauf que mon php avec une session active ou inactive ne marche pas sur le site distant, mais en utilisation local marche :S
 
Peux-tu me mettre le code complet de ta page ici ? Tu peux utiliser les balises [noparse]
PHP:
 et
[/noparse] sur le forum pour mettre en forme le code PHP :sourire-4e62:

Et quelles sont les versions de PHP que tu utilises sur ton serveur local et distant ?
 
PHP:
<?php	if (isset($_SESSION['login']))	{		// si une session est active
header('location:adminpage.php');	}	else	{		// si aucune session n'est active
echo 	'		<form action="login.php" method="post"> 	<table border="0"> 	<tr><td align="center"><b>Utilisateur</b></td> <td><input type="text" name="NomUtilisateur" value="" size="20"></td></tr> <tr><td align="center"><b>Mot de passe</b></td> <td><input type="password" name="MotDePasse" value="" size="20"></td></tr> <tr><td align="center" colspan="2"><br><input type="submit"  value="Identifiez-vous !"></td></tr></table></form>';	}?>
 
Dernière modification par un modérateur:
Je ne vois aucun session_start() dans ton script ? :insit-1d80::dontknow-102c:
 
Le session start est mis avant tout types de codes. En tout premier.
Je met toute la page ?
 
Oui s'il te plait. Cela me permettra de bien voir ce qui peut poser problème. Penses tout de même à masquer tes identifiants (MySQL et cie) si à tout hasard tu en avais sur ta page :sourire-4e62:

Et quelles sont les versions de PHP utilisées (en local comme en ligne) ?
 
Voici la première partie
PHP:
<?PHP session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//FR" "[URL]http://www.w3.org/TR/html4/loose.dtd[/URL]"> 
<html xmlns="[URL]http://www.w3.org/1999/xhtml[/URL]" xml:lang="fr" lang="fr" ><head>
<!----------------------------------------------------------------------------
          Author : Conil Alexandre
  Webmail : [EMAIL="alexconil@aliceadsl.fr"]alexconil@aliceadsl.fr[/EMAIL] 
     Stat : Student
----------------------------------------------------------------------------->
<meta http-equiv="Content-Type" content="php/html" charset="iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="index" href="index.css" />
<meta name="viewport" content="width=device-width" />
<title>Site de Sandra Cathala - Connexion</title>
<meta name="description" content=""/>   
<meta name='keywords' content=""/>
<meta name="Robots" content="index" />
<meta name="Author" content="Conil Alexandre" />
<meta name="Language" content="fr" />
</head>
<body>
<div id="entete">
<center><img src="images/tete.jpg"></center>
</div>
<div id="menu">
 <?php include("menu.php"); ?>
</div><br>
<div id="corps">
 <div id="admin">
<form action="connexionaccount.php" method="post">
  
</form>
<?php
 if (isset($_SESSION['user']))
 {
  // si une session est active
  header('location:moncompte.php');
 }
 else
 {
  // si aucune session n'est active
  echo  '
  
  <form action="moncompte.php" method="post">
  <table border="0">
  <tr><td align="center"><b>Utilisateur</b></td>
 <td><input type="text" name="NomUtilisateur" value="" size="20"></td></tr>
 <tr><td align="center"><b>Mot de passe</b></td>
 <td><input type="password" name="MotDePasse" value="" size="20"></td></tr>
 <tr><td align="center" colspan="2"><br><input type="submit"
  value="Identifiez-vous !"></td></tr>
</table>
</form>';
 }
?> 
 </div>
<br><br>
</div>
<br>
<div id="pied">
 <?php include("pied.php"); ?>
</div>

</body>
</html>



Et voici la partie du &lt;form>
PHP:
<?php
 mysql_connect("localhost","xxx","xxx")
  or die("Connexion au serveur impossible");
 mysql_select_db("xxx")
  or die("Sélection de la base de données impossible");
 $sql = 'SELECT count(*) FROM account WHERE user="'.mysql_real_escape_string($_POST['NomUtilisateur']).'" AND pass="'.mysql_real_escape_string($_POST['MotDePasse']).'"';
      
   $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
      $data = mysql_fetch_array($req);
      
      mysql_free_result($req);
      mysql_close();
      
    // si on obtient une réponse, alors l'utilisateur est un membre
      if ($data[0] == 1) {
  session_start();
        $_SESSION['user'] = $_POST['NomUtilisateur'];
  $_SESSION['pass'] = $_POST['MotDePasse'];
   
    header('Location: moncompte.php');
  
        exit();
  
      }
    // si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login ou dans son mot de passe
      elseif ($data[0] == 0) {
         $erreur = 'Compte non reconnu.';
    header ("Refresh:2;url=connexion.php");
      echo "<center>Le nom d'utilisateur ou le mot de passe est incorrecte.</center>";
      }
?>
 
Dernière modification par un modérateur:
Salut,

Peux-tu répondre à cette question s'il te plaît ?

Et quelles sont les versions de PHP utilisées (en local comme en ligne) ?

A première vue je ne vois rien de choquant, si ce n'est peut-être la première balise &lt?PHP ?> que tu devrais peut-être mettre en minuscule (suffit que PHP soit réglé un poil trop restrictif, ça pourrait expliquer la non intreprétation de la commande).
 
Avec une page PHP ne contenant que ceci :

PHP:
<?php phpinfo(); ?>
:sourire-4e62:
 
Hein ? Je ne comprends pas ce que ton dernier message voulait dire :insit-1d80:
 
Ahhh fallait le faire tout simplement ! :lol-1923:
J'le fais dans la journée si j'arrive à acceder a mon ordi.


J'ai trouvé la solution :D
 
Dernière édition:
Statut
La discussion n'est pas ouverte à d'autres réponses
Retour
Haut