09-09-2006, 12:15 PM
voila le code que j'utilise (c'est sur le site du zero ):
Code PHP :
<?
if (!isset($_SESSION['logged'])) $_SESSION['logged'] = false;
//Inclusion du fichier contenant les identifiants de connexion à la base de données.
require("config.inc.php");
//Connexion à la base de données.
mysql_connect($host, $username, $password);
mysql_select_db($bdd_name);
if ($_SESSION['logged'] === false)
{
if (isset($_COOKIE['pseudo'], $_COOKIE['mot_passe']))
{
//Vérification du pseudo.
$pseudo = htmlspecialchars($_COOKIE['pseudo']);
$mot_passe = htmlspecialchars($_COOKIE['mot_passe']);
//Requête comptant le nombre de pseudos $_POST['pseudo']
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'");
//Si le pseudo existe.
if (mysql_result($sql,0,'nb_pseudo') == 1)
{
//Vérification du mot de passe
//Information sur le compte du membre.
$sql_infos = mysql_query("SELECT id, mot_passe, confirmation FROM membres WHERE pseudo='".$pseudo."'");
$donnees = mysql_fetch_array($sql_infos);
//Comparaison du mot de passe et vérification que le compte est confirmé.
if ($mot_passe == $donnees['mot_passe'] && $donnees['confirmation'] == 1)
{
//Tout est bon, on connecte le membre.
$_SESSION['logged'] = true;
//Création de 2 variables de sessio, contenant des informations sur le membre.
$_SESSION['id'] = $donnees['id']; //Id du membre.
$_SESSION['pseudo'] = $pseudo; //Pseudo du membre.
//Redirection vers la page membre.
header("location: membres.php");
}
}
}
}
//Si la variable $_POST['connexion'] (bouton submit du formulaire) et la variable $_SESSION['logged'] vaut false (déconnecté) existent.
if (isset($_POST['connexion']) && $_SESSION['logged'] === false)
{
//Vérification des autres variables.
if (isset($_POST['pseudo'],$_POST['mot_passe']) && !empty($_POST['pseudo']) && !empty($_POST['mot_passe']))
{
//Vérification du pseudo.
$pseudo = htmlspecialchars($_POST['pseudo']);
$mot_passe = htmlspecialchars($_POST['mot_passe']);
//Requête comptant le nombre de pseudos $_POST['pseudo']
$sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'");
//Si le pseudo existe.
if (mysql_result($sql,0,'nb_pseudo') == 1)
{
//Vérification du mot de passe
//Information sur le compte du membre.
$sql_infos = mysql_query("SELECT id, mot_passe, confirmation FROM membres WHERE pseudo='".$pseudo."'");
$donnees = mysql_fetch_array($sql_infos);
//Hashage du mot de passe.
$mot_passe_hash = md5($mot_passe);
//Comparaison du mot de passe.
if ($mot_passe_hash == $donnees['mot_passe'])
{
//On vérifie que le compte est confirmé.
//Si $donnees['confirmation'] vaut 1.
if ($donnees['confirmation'] == 1)
{
if (isset($_POST['souvenir']) && $_POST['souvenir'] == 'on')
{
//Temps d'expiration des cookies (1 an).
$expire = time() + 3600 * 24 * 365;
setcookie('pseudo', $pseudo, $expire);
setcookie('mot_passe', $mot_passe_hash, $expire);
}
//Tout est bon, on connecte le membre.
$_SESSION['logged'] = true;
//Création de 2 variables de session, contenant des informations sur le membre.
$_SESSION['id'] = $donnees['id']; //Id du membre.
$_SESSION['pseudo'] = $pseudo; //Pseudo du membre.
//Redirection vers la page membre.
header("location: membres.php");
}
else
echo 'Erreur : le compte n\'est pas confirmé !';
}
else
echo 'Erreur : le mot de passe est incorrect !';
}
else
echo 'Erreur : le pseudo n\'existe pas !';
}
else
echo 'Erreur : veuillez remplir tous les champs !';
}
?>
C'est le code de conection etd e conection automatique. le probleme (et oui j'ai trouve ), le voila:
Je dois mettre le header avant tout code html (avec le session start alors..). La premiere fois que je vais sur index.php afin de me connecter, il ne me redirige pas vu que j'ai rien mis dans mon formulaire mais une fois que je suis connect (que j'ai entré mon mot de passe et mon pseudo et que j'ai fait "connection"), il me connect bien mais ne me redirige pas vers membres.php. Donc... je suis oblige d'aller moi même sur membres.php avec la barre d'adresse. J'arrive donc sur ma page membres.php et je suis bien connecté car il me met "bonjour zneman".
Maintenant, quand je me deconect (avec deconnexion.php), il me deconect bien et me redirige de suite a la page index.php. Le probleme est que une fois redirigé vers la page index.php, le header me redirige directement a la page membres.php mais la je ne suis pas connect !
Bref ... c'est comprehenssible ? ^^
En gros:
Index.php ==> connection ==> connecté ==> acces à membres.php ==> deconnection ==> je suis bien deco ==> redirection a index.php ==> redirection imediate de index.php à membres.php