Cannot send session...

Fermé
competizione360 - 19 juin 2008 à 19:21
 competizione360 - 27 juin 2008 à 12:51
Bonjour à tous,

Je suis en train d 'héberger un site chez free, malheureusement j'ai cette double erreur:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /mnt/138/sdb/8/a/toto/include/entete2.php:16) in /mnt/138/sdb/8/a/toto/admin/connexion.php on line 5

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /mnt/138/sdb/8/a/toto/include/entete2.php:16) in /mnt/138/sdb/8/a/toto/admin/connexion.php on line 5

Voici le début de mon fichier connexion.php:

[code]
<?php
include('../include/entete2.php');
echo'<link href="../style/style.css" rel="stylesheet" type="text/css"/>';

session_start();

if (isset($_SESSION['login'])) {
$login=$_SESSION['login'];
header('Location: menu.php');
exit();

echo "</div>";
/code

et le début de mon fichier entete2.php:


[code]
<?php
echo'<head>
<link href="style/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="conteneur">
<h1 id="header"></h1>

<ul id="menu">
<li><a href="../index.php">Accueil</a></li>
<li><a href="../ameublement.php">Ameublement</a></li>
<li><a href="../deco.php">Décoration</a></li>
<li><a href="../divers.php">Divers</a></li>
<li><a href="../contact.php">Contacts</a></li>
</ul>'
?>

/code

7 réponses

competizione360
19 juin 2008 à 19:23
Apparemment il ne s'agit pas de problèmes d'espace, et j'ai ajouté un dossier "sessions" à la racine de mon site.

Pourriez -vous m'éclairer? merci d'avance :-)
0
adgem0 Messages postés 119 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 7 mai 2010 160
19 juin 2008 à 20:20
Ton session_start doit se trouver avant tout les autres trucs.
Place le dans ton fichier entete2.php en première position, c'est à dire avant
echo '<head>';
0
competizione360
19 juin 2008 à 21:58
Merci pour ton aide,

Mais désormais, lorsque je me log, j'ai cette erreur:


Warning: Cannot modify header information - headers already sent by (output started at /mnt/138/sdb/8/a/toto/include/entete2.php:17) in /mnt/138/sdb/8/a/toto/admin/connexion.php on line 69

voici mon code de connexion.php à partir d e la ligne 68

if (($data['id'] != 0)) {

session_start();

$_SESSION['login'] = $_POST['login'];
$_SESSION['id'] = $data['id'];
//echo $_SESSION['login'];
header('Location: menu.php');
exit();



et mon code entete2.php

<?php
session_start();
echo'<head>
<link href="style/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="conteneur">
<h1 id="header"></h1>

<ul id="menu">
<li><a href="../index.php">Accueil</a></li>
<li><a href="../ameublement.php">Ameublement</a></li>
<li><a href="../deco.php">Décoration</a></li>
<li><a href="../divers.php">Divers</a></li>
<li><a href="../contact.php">Contacts</a></li>
</ul>'
?>
Malheureusement, ici j'ai beau déplacer le session start de mon connexion.php ligne 70 avant, çà ne fonctionne pas, peux-tu m'apporter ton aide à nouveau? merci d'avance.
0
adgem0 Messages postés 119 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 7 mai 2010 160
20 juin 2008 à 09:22
En haut de ton fichier entete2.php, tu dois inclure connexion.php :

<?php
include('../admin/connexion.php');
echo'<link href="style/style.css" rel="stylesheet" type="text/css"/>';
... et viens ensuite le reste de ton fichier entete2.php

Et le début de ton fichier connexion.php doit être :

<?php

session_start();

if (isset($_SESSION['login'])) {
$login=$_SESSION['login'];
header('Location: menu.php');
exit();
... et viens la suite de ton fichier connexion.php

Par contre dans tes pages, tu devras inclure entete2.php en première position.
0
arnaudligth
20 juin 2008 à 10:09
Salut,

mets session_start() avant les include et vire le dans entete2.php parce que si y a 2 session_start() PHP essaye de créer 2 sessions donc erreur.

on fait pas un truc du genre :

je teste le login et si c'est bon j'ouvre la session

mais :
on ouvre la session
on teste le login
si le login est bon on donne accés à la page...

-------------------------------------------

sur mes sites j'ai un fichier session.inc.php qui fait :
on ouvre la session
on teste le login
si le login est mauvais j'affiche une page (code html contenu dans session.inc.php) qui dit que c'est pas bon et un petit exit(); à la fin pour empécher que ça affiche la page qui appelle l'inclusion
0
competizione360
20 juin 2008 à 12:15
Merci à vous 2, mon fichier entete2.php (qui est en realité une simple banniière + bande menu en dessous)semble etre ok ainsi:

<?php

include('../admin/connexion.php');
echo'<link href="style/style.css" rel="stylesheet" type="text/css"/>';
?>
<body>
<div id="conteneur">
<h1 id="header"></h1>

<ul id="menu">
<li><a href="../index.php">Accueil</a></li>
<li><a href="../ameublement.php">Ameublement</a></li>
<li><a href="../deco.php">Décoration</a></li>
<li><a href="../divers.php">Divers</a></li>
<li><a href="../contact.php">Contacts</a></li>
</ul>


Malheureusement, en me connectant à la page connexion.php, j'ai une erreur 500 problème interne du serveur, voici mon code complet:

<?php
session_start();
include('../include/entete2.php');
echo'<link href="../style/style.css" rel="stylesheet" type="text/css"/>';


if (isset($_SESSION['login'])) {
$login=$_SESSION['login'];
header('Location: menu.php');
exit();

echo "</div>";
//sinon on affiche la page de connexion et d'inscription
}else{

echo '<div id="contenu"><br>
<br>
<h2>Connexion à l\'espace membre</h2>
<!------------------ CONNEXION --------------------->
<form action="connexion.php" method="post">
<table width="35%" border="0" align="center" cellspacing="0">
<tr>
<td><div align="right"><b>Login  </b></div></td>
<td> <div align="left">
<input type="text" name="login"></div>
</td>
</tr>
<tr>
<td><div align="right"><strong>Mot de passe   </strong></div></td>
<td> <div align="left">
<input type="password" name="pass"></div>
</td>
</tr>
</table>
<center><br>
<input type="submit" name="connexion" value="Connexion"><br><br>
</center>
</form>';

if (isset($erreur)) echo '<br />',$erreur;

echo' <!------------------------------ FIN CONNEXION ----------------------------------->


</div>';

}
?>
<?php

// on teste si le visiteur a soumis le formulaire de connexion
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {

include('../include/cnx_bdd.php');

// on teste si une entrée de la base contient ce couple login / pass
$sql = 'SELECT * FROM admin WHERE login="'.mysql_escape_string($_POST['login']).'" AND mdp="'.mysql_escape_string($_POST['pass']).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result($req);
mysql_close();

//echo "mdp : ".$data['mdp'];
//echo "data : ".$data['id'];
//si c'est la première fois que l'utilisateur se connecte

if (($data['id'] != 0)) {

session_start();

$_SESSION['login'] = $_POST['login'];
$_SESSION['id'] = $data['id'];
//echo $_SESSION['login'];
header('Location: menu.php');
exit();



// si on ne trouve aucune réponse, le visiteur s'est trompé soit dans son login, soit dans son mot de passe
}elseif ($data[0] == 0) {
$erreur = 'Compte non reconnu.';
}
// sinon, erreur de base de données
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}

}
else {
$erreur = 'Au moins un des champs est vide.';
}
}

include('../include/footer2.php');
?>

Pouvez-vous m'eclairer? sinon j'envisage de refaire le tout différemment...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
competizione360
25 juin 2008 à 11:47
je n'ai toujours pas réussi, aidez-moi svp!

est-ce que changer d'hebergeur (je suis actuellement chez free) pourrait résoudre le problème?
car mes sessions marchaient très bien en local sous easy php..

merci d'avance
0
adgem0 Messages postés 119 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 7 mai 2010 160
27 juin 2008 à 11:08
C'est quoi l'adresse de ton site ?
0
competizione360
27 juin 2008 à 12:51
désolé, j'ai réussi avec mes sessions sur free (j'ai bien mis mes headers avant mes echo), mais désormais j'ai un pb d'upload d'image sous free, la taille d'envoi est vraiment minime! je reposterai un nouveau topic si je n'arrive pas à resoudre mon pb! merci+++
0