Bonjour,
voila je dois faire une page de login qui renvoi a une autre page qui vas tester si l'utilisateur existe dans une base mysql ( en cryptant le pass pour plus de sécurité ) puis creer une session et le renvoyer sur une autre page.
Pour cela j'ai trouvé un bon tuto que j'ai apprécié sur le forum :
http://bob.developpez.com/phpauth/

et voila le code que j'ai fais :

Login.php :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<html> 
<head> 
<title>Login Page</title> 
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' /> 
<script language="javascript" type="text/javascript" src="login.js"></script> 
</head> 
<body> 
 
<script type="text/javascript">
function submit_pass()
{
  pass=document.forms['log'].passwd.value;
  document.forms['log'].passwd.value="";
  buf=MD5(pass);
  document.forms['log'].md5.value=buf;
 
  return true;
} 
</script>
 
<form id='log' method='post' action='auth.php' onsubmit='javascript:submit_pass();'> 
<input type='hidden' name='md5' /> 
<table align='center'> 
<tr><td>Login</td><td><input name='login' /></td></tr> 
<tr><td>Mot de passe</td><td><input type='password' name='passwd' /></td></tr> 
<tr><td colspan='2' align='center'><input type='submit' value='Login !' /></td>
</tr> 
</table> 
</form> 
<?php
echo md5("azerty");
?>
</body>

auth.php :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<?php
function CheckUser($login,$md5) 
{ 
      $serveurBD = "localhost"; 
      $userBD    = ""; // mets ton utilisateur de la base 
      $passBD    = ""; // mets son mot de passe 
      $base      = "filas" ; 
      $monlogin  = $login; 
      $monpass   = $md5; 
      // connexion base 
      $connexion = @mysql_connect($serveurBD, $userBD, $passBD) or die ("Erreur de connexion MySQL !"); 
      mysql_select_db($base) or die ( sql_error() ); 
      // requete 
      $requete = "SELECT pass FROM utilisateur WHERE login LIKE '$monlogin'"; 
      $resultat = mysql_query($requete) or die( sql_error() ); 
 //     if( mysql_num_rows($resultat) != 1 ) return false; 
      $passbase = mysql_fetch_row($resultat); 
	  mysql_free_result($resultat);      
      mysql_close($connexion); 
  if($md5==$passbase) // MD5 de azerty 
    { echo 'dans true '; 
	return true; 
	}
	echo 'dans false ';  
    return false; 
}
?>
<?php
if(!isset($_POST['md5'])) 
{ 
//  header("Location: login.php"); 
  //die();
  echo 'dans test de md5'; 
} 
$md5=$_POST['md5']; 
if(!isset($_POST['login'])) 
{ 
 // header("Location: login.php"); 
  // die();
  echo 'dans test de login'; 
} 
$login=$_POST['login']; 
if(!CheckUser($login,$md5)) 
{ 
  //header("Location: login.php"); 
  //die();
  echo 'dans checkuser'; 
}
session_start(); 
 
$_SESSION['last_access']=time(); 
$_SESSION['ipaddr']=$_SERVER['REMOTE_ADDR']; 
$_SESSION['user']=$login; 
 
header("Location: page.php");
?>

Et voila l'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
dans true 
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at c:\wamp\www\auth.php:21) in c:\wamp\www\auth.php on line 49
 
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\wamp\www\auth.php:21) in c:\wamp\www\auth.php on line 49
 
Warning: Cannot modify header information - headers already sent by (output started at c:\wamp\www\auth.php:21) in c:\wamp\www\auth.php on line 55