Page 1 sur 1

Problème d'authentification

Posté : 29 août 2005, 14:45
par Ryukisai
Bonjour a vous tous,

j'utilise un système de connexion par session avec dbb et tout le tralalala!
quand je teste ça uniquement avec le script (sans graphisme ni rien juste les chmaps de connexion) ça marche niquel, j'ai donc intégrer mon système dans mes pages de mon site mais là j'ai un message d'erreur...
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at d:\program files\easyphp\www\pages\login.php:4) in d:\program files\easyphp\www\pages\login.php on line 101
je comprend pas tellement ce message qui semble me dire qu'une session est déjà en cours (c'est ça?)
et la ligne 101 fais référence à mon "session_start();"
voilà la partie de mon script qui gère la connection, extrait de ma page login.php qui analyse le login et le password:
<?
mysql_connect("localhost", "root", "");
mysql_select_db("bdd_site");
session_start();

if(isset($_POST) && !empty($_POST['pseudo']) && !empty($_POST['password'])) {
  extract($_POST);
  $sql = "select password from membres where pseudo='".$pseudo."'";
  $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error() );
  $data = mysql_fetch_assoc($req);

  if($data['password'] != $password) {
    echo '<p>Mauvais pseudo / password.</p>'; 
  }
  else {
    $_SESSION['pseudo'] = $pseudo;
    
    echo 'Vous êtes bien logué <br>';
	echo'<a href="javascript:history.back(1)">Cliquez ici</a> si la redirection ne marche pas.';
	//echo '<meta http-equiv="Refresh" content="2; URL=javascript:history.back(1)">';
     
  }    
}
else {
  echo '<p>Tous les champs ne sont pas remplis.</p>';
}


?>
	</TD>
	<TD valign=top align=right width=171>
		<?
	if(!isset($_SESSION['pseudo'])) 
	{
	echo '
	<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
		<TR>
			<TD COLSPAN=2>
				<IMG SRC="images/spacer_droit1.gif" WIDTH=191 HEIGHT=28 ALT="spacer_droit1"></TD>
		</TR>
		<TR>
			<TD>
				<IMG SRC="images/img_inscrire.gif" WIDTH=171 HEIGHT=29 ALT="img_inscrire"></TD>
			<TD ROWSPAN=6>
				<IMG SRC="images/droit_05.gif" WIDTH=20 HEIGHT=247 ALT=""></TD>
		</TR>
		<TR>
			<TD background="images/droit_06.gif" WIDTH=171 HEIGHT=58 ALT="" align=center>
			<a href=inscription.php>
			Professionnel<br>
			Cliquez ici</a>
			</TD>
		</TR>
		<TR>
			<TD>
				<IMG SRC="images/droit_07.gif" WIDTH=171 HEIGHT=25 ALT=""></TD>
		</TR>
		<TR>
			<TD background="images/droit_08.gif" WIDTH=171 HEIGHT=85 ALT="" align=center>
			<form action="login.php" method=\'post\'>
			Login:<br>
			<input type="text" name="pseudo" maxlength="25" size=10><br>
			Mot de passe<br>
			<input type="password"name="password" maxlength="10" size=10>
			</TD>
		</TR>
		<TR>
			<TD background="images/droit_08.gif" WIDTH=171 HEIGHT=85 ALT="" align=center>
				<input type=image IMG SRC="images/bt_ident.gif" WIDTH=29 HEIGHT=29 ALT="bt_ident"><br>
				<a href=oublie[1].php><font size=2>Vous avez perdus vos identifiants?</font></a>
				</font></TD>
		</TR>
		<TR>
			<TD height=295 width=171 colspan=4>
				<IMG SRC="images/pub.gif" ALT="">
			</TD>
			<TD>
				<IMG SRC="images/droit_05.gif" WIDTH=20 HEIGHT=295 ALT="">';
	}
	else
	{
	echo
	'<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
	<TR>
		<TD COLSPAN=2>
			<IMG SRC="images/spacer_droit1.gif" WIDTH=192 HEIGHT=28 ALT="spacer_droit1"></TD>
	</TR>
	<TR>
		<TD>
			<IMG SRC="images/img_inscrire.gif" WIDTH=171 HEIGHT=29 ALT="img_inscrire"></TD>
		<TD ROWSPAN=6>
			<IMG SRC="images/droit_05.gif" WIDTH=21 HEIGHT=87 ALT=""></TD>
	</TR>
	<TR>
		<TD>
			<IMG SRC="images/droit_06.gif" WIDTH=171 HEIGHT=58 ALT=""></TD>
	</TR>
	<TR>
			<TD height=295 width=192 colspan=4>
			Pub
			</TD>
		</TR>';}
?>
Si une âme charitable pouvait m'expliquer précisement ce que veux dire le message d'erreur je lui en serais très reconnaissant!!
Merci bien...

Posté : 29 août 2005, 14:53
par Cyrano
Une petite exploration du forum t'aurait amené ICI

Posté : 29 août 2005, 15:11
par Ryukisai
:agenouille:
Meaculpa il est vrai que je ne prend pas toujours le temps de fouiller dans le forum...
je comprend bien que tu as surement beaucoup de questions qui te sont posées donc je te remercie de prendre quand meme le temps de me répondre et de m'aider en me montrant le post de Xenon_54...
je fais donc pénitence... ](*,)

Donc si je comprend bien ce que Xenon_54 dit il faut que ma fonction d'authentification soit placée avant tout le reste de ma page? C'est bien cela?

Posté : 29 août 2005, 15:14
par Cyrano
Non, ça veut dire que certaines fonctions doivent être exécutées impérativement avant tout envoi vers le navigateur.

Le session_start() doit être placé en premier dans le premier fichier utilisé. Dans le cas où plusieurs fichiers sont utilisés pour construire la page, on ne le met que dans le premier et pas dans les suivants. Le cas classique, une page avec trois includes: entete.php, contenu.php et piedpage.php : on ne mettra le session_start() QUE dans entete.php.

Posté : 29 août 2005, 16:54
par Ryukisai
J'ai donc suivi tes conseils et j'ai mis <?session_start();?> en haut de chaque page et effectivement maintenant je n'ai plus de problème...
merci bien pour ton aide et je te promet de chercher mes réponses dans le forum à l'avenir avant de poster...