Page 1 sur 1

session_start()

Posté : 21 avr. 2006, 18:06
par yuuzhantar
Bonjour

j'ai un petit problème avec une fonction session_start()

en fait j'ai un formulaire d'identification,
connection.php
<form id="form1" name="form1" method="post" action="connection2.php">
  <label></label>
  <table width="120" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td height="15"><p>Pseudo :</p>      </td>
    </tr>
    <tr>
      <td height="15"><input type="text" name="pseudo" /></td>
    </tr>
    <tr>
      <td height="15">Mot de passe : </td>
    </tr>
    <tr>
      <td height="15"><input type="password" name="pass" /></td>
    </tr>
    <tr>
      <td height="15"><label></label></td>
    </tr>
    <tr>
      <td height="15"><input type="submit" name="Submit" value="Connection" /></td>
    </tr>
    <tr>
      <td height="15">&nbsp;</td>
    </tr>
    <tr>
      <td height="15"><a href="perdu.php" class="menulink">Mot de passe perdu</a></td>
    </tr>
    <tr>
      <td height="15" class="menulink"><a href="inscription.php" target="_parent" class="menulink">Inscription</a></td>
    </tr>
  </table>
  <p>&nbsp;</p>
</form>
une page de vérification
connection2.php
<?

$user_ip = $_SERVER['REMOTE_ADDR'];

mysql_connect(xxxxxxxxxxxxxxxxxxxxxxx);
mysql_select_db(xxxxxxxxxxxxxxxxxxxxx);

if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['pass'])) {
  extract($_POST);
  
$pseudoform = $_POST['pseudo'];
$passform = $_POST['pass'];

if(empty($pseudoform))
{
echo '<p><font color="#FF0000"><b>Remplir tous les champs</b></font></p>';include('connection.php'); // On inclut le formulaire d'identification
exit;
}
elseif(empty($passform))
{
echo '<p><font color="#FF0000"><b>Remplir tous les champs</b></font></p>';include('connection.php'); // On inclut le formulaire d'identification
exit;
}
else
{
$passmd5 = md5($passform);
$sql = "select username, user_id, user_password, user_email from xx_phpbb2_users  where username='$pseudoform'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
	if($data['user_password'] != $passmd5) 
	{
    echo '<p><font color="#FF0000"><b>Mauvais pseudo / password. Merci de recommencer</b></font></p>';
    include('connection.php'); // On inclut le formulaire d'identification
    exit;
	}
	else
	{
	session_start();
    $_SESSION['user_id'] = $data['user_id'];
	$_SESSION['user_ip'] = $user_ip;
	$_SESSION['username'] = $data['username'];
	$name = $data['username'];
	echo"<p>Bonjour $name vous êtes bien logués</p>";
    include('membre.php');
	exit; 
	}
}
}
mysql_close();

?>
et une page espace membre
membre.php
que je ne vais pas détailler


je rempli le formulaire correctement,
je l'envoi
le pass est ok

ouverture de session

et bammmm
problème !

sa me met
ceci
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/sdc/0/8/yuu.sw/sudoku/connection2.php:4) in /var/www/sdc/0/8/yuu.sw/sudoku/connection2.php on line 123

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/sdc/0/8/yuu.sw/sudoku/connection2.php:4) in /var/www/sdc/0/8/yuu.sw/sudoku/connection2.php on line 123

Bonjour administrateur vous êtes bien logués

Vos infos


Deconnection
la ligne 123 est celle de connection2.php avec le session_start();
else
{
session_start();
$_SESSION['user_id'] = $data['user_id'];
pourquoi sa met ceci ???

Posté : 21 avr. 2006, 18:06
par yuuzhantar
oups

merci d'avance pour votre aide

yann

Posté : 21 avr. 2006, 18:20
par iclo

Posté : 21 avr. 2006, 18:29
par yuuzhantar
j'ai mis ceci maintenant
	$name = $data['username'];
	$id = $data['user_id'];
	session_start();
                $_SESSION['user_id'] = "$id";
	$_SESSION['user_ip'] = "$ip";
	$_SESSION['username'] = "$name";
et sa met toujours
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /var/www/sdc/0/8/yuu.sw/sudoku/connection2.php:4) in /var/www/sdc/0/8/yuu.sw/sudoku/connection2.php on line 125

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /var/www/sdc/0/8/yuu.sw/sudoku/connection2.php:4) in /var/www/sdc/0/8/yuu.sw/sudoku/connection2.php on line 125
PS : je vois pas pourquoi ta répondu sa iclo.

Posté : 21 avr. 2006, 18:37
par iclo
Le problème que tu rencontres est fréquemment abordé sur ce forum.
Le lien que je t'ai passé renvoit vers un poste d'hier où j'explique que tu ne peux avoir aucun code html avant de faire appel aux fonction de création de cookie ou de header.
La doc t'en dira plus.

Posté : 21 avr. 2006, 19:00
par yuuzhantar
ah sa y est

sa marche

merci bien iclo

++