Voici mon code pour Effectuer une authentification avec des session sur mon site.
Il marche ! Mais il ya un gros bug, je lutte depuis 3 jours.
Code :
- if(isset($_POST['username']) && isset($_POST['user_password'])){
- $username_entre=$_POST['username'];
- $user_password_entre=md5($_POST['user_password']); // On crypte le password entré pour le comparé avec celui contenu dans la base de donnée du forum
- //******************************
- //Connexion a la base de données
- //******************************
-
-
- mysql_connect("$host", "$login", "$mdp" ) or die("error" ); // Connexion à MySQL
- mysql_select_db("forum" ); // Sélection de la base forum
-
- //###############################
- $retour = mysql_query("SELECT * FROM phpbb_users WHERE username='$username_entre'" );//On verifie que le login entré existe dans la base de donnée
-
- while ($data=mysql_fetch_array($retour))
- {
-
-
-
- if( ($username_entre || strtolower($username_entre)) == $data['username'] && $user_password_entre == $data['user_password']){
- $_SESSION['online']=$data['user_level'];
-
- $_SESSION['user_id']=$data['user_id']; //id de l'utilisateur
-
- $_SESSION['username']=$data['username'];//username
- $_SESSION['user_password']=$data['user_password'];
-
- $_SESSION['user_level']=$data['user_level'];// Niveau de l'utilisateur admin = 1 | moderator= 2 | user = 0
- $_SESSION['user_email']=$data['user_email'];
-
- echo $_SESSION['username']; //ON AFFICHE Le Nom de l'utilisateur en ligne
-
-
-
-
- }
-
- }
- }
-
- <form id="form1" name="form1" method="post" action="">
-
- <input name="username" type="text" value="login" size="7" />
- <input name="user_password" type="password" value="password" size="7" />
- <input name="send" type="submit" value="Log in" />
-
- </form>
|
Pour vous expliquer mon bug je vais prendre un exemple.
Comme vous avez pu le constater je fait une requete sur la table des utlisateurs d'un forum phpBB (ce compte sera aussi leur compte sur mon site).
Donc prennons un exemple avec 2 comptes (login / pass) : toto / toto puis tata / tata
Je me connecte avec le compte toto, l'authentification se deroule avec succes.
Les variables de session suivantes existent alors:
Code :
- $_SESSION['online']=$data['user_level'];
- $_SESSION['user_id']=$data['user_id']; //id de l'utilisateur
- $_SESSION['username']=$data['username'];//username
- $_SESSION['user_password']=$data['user_password'];
- $_SESSION['user_level']=$data['user_level'];// Niveau de l'utilisateur admin = 1 | moderator= 2 | user = 0
- $_SESSION['user_email']=$data['user_email'];
|
donc:
$_SESSION['username'] = 'toto';
Jusque ici pas de probleme (enfin il me semble).
Le probleme survient lorsque une autre personne vien s'authentifier avec un autre compte, par exemple : tata ( le compte toto étant deja authentifier).
Par conséquent dans la "normalité" il y aurai les comptes toto et tata de connectés.
Le souci c'est que les variables de sessions de toto sont écrasées par celle de tata.
Les 2 comptes connecté au site sont 2 comptes ayant pour login tata !!
Quand je suis tout seul sur le site il m'affiche "Welcome toto" puis tata vien s'authentifier.
Je rafraichi ma page, il m'affiche "Welcome tata".
Que faire pour que plusieur compte tournent sans que les variables de sessions ne soit pas COMMUNES lol
Merci de votre aide.
thomas
Message édité par dragon38330 le 10-12-2006 à 12:37:16