par
Poukie » 10 oct. 2009, 23:04
Salut
Je souhaite créer une page de login pour un site de jeu avec les propriétés suivantes :
Si le joueur arrive sur la page, il a les champs de login / mdp affichés.
Si le joueur a entré ses identifiants, la page est rechargée et affiche la page d'accueil normale (ici "bienvenue machin").
Si le joueur a entré de mauvais identifiants, la page est rechargée et lui dit l'erreur.
Voici le code :
<?php
if ( !isset($_SESSION['login'])) // Si le login de la session n'existe pas
{
if ( isset ($_POST['login']) AND isset ($_POST['password'])) //La page est chargée avec les données de connexion
{
$login = $_POST['login'] ;
$password = $_POST['password'] ;
include_once('connexion.inc.php'); //connexion à la BDD
$sql = "SELECT id_joueur FROM joueur WHERE login='$login' AND password='$password'";
$recup = $dbh->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()) ;
$result = $recup->fetchAll() ;
$nombre = count($result) ;
if ( $nombre == 1) // Il y a bien un couple existant de ce login/mot de pass => on crée la session avec le login
{
$_SESSION['login'] = "$login";
header("Location: accueil2.php");
exit() ;
}
elseif ( $nombre == 0) // Il n'y a aucune entrée correspondant
{
echo "mauvais password ou mauvais login" ;
}
else // Il y a plusieurs couples correspondant (pas normal !)
{
echo "2 login similaires existent dans la base de donnée, veuillez en informer le webmaster" ;
}
}
else // La page est chargée sans données de connexion (1ere visite)
{
echo "<html>";
echo "<head><title>accueil</title></head>";
echo "<body>";
echo "<form method='POST' action='accueil2.php'>
<label for='nom'>Login : </label>
<input type='text' name='login'>
<label for='password'>password : </label>
<input type='password' name='password'>
<input type='submit' value='connecter'>
     
<a href='inscription.php'>inscription</a>
</form>" ;
}
}
else //Là, on a bien la session avec le login, donc on lance la page normale
{
$login = $_SESSION['login'] ;
echo "<html>";
echo "<head><title>accueil</title></head>";
echo "<body>";
echo "bienvenue $login !" ;
}
echo "</body></html>" ;
?>
Vous l'avez vu, il n'y a pas de session_start().
En réalité, je voudrais le mettre ici :
if ( $nombre == 1) // Il y a bien un couple existant de ce login/mot de pass => on crée la session avec le login
{
session_start() ;
$_SESSION['login'] = "$login";
header("Location: accueil2.php");
exit() ;
}
Mais ca ne fonctionne pas.
En revanche, si je le place au tout début de ma page, cela fonctionne. Ce que je ne comprends pas, c'est qu'il me semble que ce qui concerne les sessions doit être créé avant la page html, or il me semble que c'est pourtant le cas dans ma page. Peut être ai-je mal compris ?