Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/11/2010, 13h57   #1
Membre à l'essai
 
Benjamin
Inscription : novembre 2009
Messages : 122
Détails du profil
Informations personnelles :
Nom : Benjamin

Informations forums :
Inscription : novembre 2009
Messages : 122
Points : 23
Points : 23
Par défaut récupération de cookie dans une requête

Bonjour,

j'ai un soucis quand à ma tentative de login automatique:

Voilà, j'ai un formulaire de connexion classique, avec un bouton se souvenir de moi. Lorsque l'utilisateur se connecte, j'ai mis une vérification en place pour le mot de passe et login. si c'est le cas l'utilisateur à accès à mon site et un cookie est crée
Code :
setcookie('login', $_POST['logger'], time()+...); etc..
Ainsi lorsqu'un utilisateur se déconnecte, je souhaiterai qu'il n'ait pas à retaper son login et mot de passe (car il a mis "se souvenir de moi" la derniere fois).

J'ai donc créer une vérification dans mon index:
Code :
1
2
3
4
5
6
<?php if(isset($_COOKIE['login']) && isset($_COOKIE['pass1'])){ $login=$_COOKIE['login'];
$password=mysql_query("SELECT password FROM logins WHERE login=".$login.";");
}else{
$login="";
$password="";
}
ce code ne fonctionne pas pr la simple et bonne raison que je fais une requête avec comme condition que le login soit égal au cookie (qui ne se situe pas ds la base de donnée..)
Donc la logique serai: si il y a un cookie je veux récupérer ces données
Mais celle ci son cryptée par la fonction md5, je ne peux donc pas récupérer mon mot de passe? (pour que l'utilisateur n'ai pas à le saisir de nouveau.)
benjamin002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 14h09   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 287
Points : 7 287
Bonsoir,

Vire le ";" dans la requête et mets $login dans des simples quotes.

Code :
$password=mysql_query("SELECT password FROM logins WHERE login='".$login."' ");
A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 14h30   #3
Membre à l'essai
 
Benjamin
Inscription : novembre 2009
Messages : 122
Détails du profil
Informations personnelles :
Nom : Benjamin

Informations forums :
Inscription : novembre 2009
Messages : 122
Points : 23
Points : 23
"Bonsoir" andry.aime (il est 14h! )

en fait je ne pense pas que ça soit un problème de synthaxe mais plutôt de logique que j'ai car voici l'erreur qu'il m'affiche dans mon index.php(page login)

Citation:
Warning mysql_query()[function.mysql-query]: Access denied for user 'SYSTEM'@'localhost'(using password: NO) in C:\... on line 4
qui correspond donc à cette ligne:

Code :
$password=mysql_query("SELECT password FROM logins WHERE login='.$login.'");
En fait dans ma base de donnée mon mot de passe n'est pas crypté en md5 mais lorsque je créer le cookie(lorsque l'utilisateur se connecte), celui-ci est crypté en md5. donc je veux le récupérer dans ma base de donnée, mais comment choisir le bon mot de passe associé au login?
benjamin002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 14h32   #4
Modérateur
 
Inscription : septembre 2010
Messages : 6 998
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 998
Points : 8 311
Points : 8 311
tu fais pas de mysql_connect avec c'est pour ca
et t'as requete n'est pas bonne :

si le pseudo est égale a : toto
t'as requête va être
Code :
SELECT password FROM logins WHERE login='.toto.'
les . sont de trop
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 14h45   #5
Membre à l'essai
 
Benjamin
Inscription : novembre 2009
Messages : 122
Détails du profil
Informations personnelles :
Nom : Benjamin

Informations forums :
Inscription : novembre 2009
Messages : 122
Points : 23
Points : 23
Bonjour stealth35,

J'ai suivis tes conseils, cependant maintenant j'ai une page blanche à la place de mon formulaire de connexion, je te laisse mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
		if(isset($_COOKIE['login']) && isset($_COOKIE['pass1'])){
			$login=$_COOKIE['login'];
			include("connexion.php");
			$password=mysql_query("SELECT password FROM logins WHERE login='$login'");
			exit();
			mysql_close();
		}else{
			$login="";
			$password="";
		}
           ?>
Je précise que j'ai inseré ce code tout en haut, avant tout code html (avant même le <!DOCTYPE html PUBLIC...) est ce correct?
benjamin002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 15h13   #6
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 126
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 126
Points : 7 287
Points : 7 287
Re,

Code :
1
2
3
4
$result=mysql_query("SELECT password FROM logins WHERE login='$login'");
while($row=mysql_fetch_array($result)){
  $password=$row["password"];
}
vire le exit(), ça va arrêter l'exécution du reste du script (enfin laisse le si c'est ton besoin ).

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 15h24   #7
Membre à l'essai
 
Benjamin
Inscription : novembre 2009
Messages : 122
Détails du profil
Informations personnelles :
Nom : Benjamin

Informations forums :
Inscription : novembre 2009
Messages : 122
Points : 23
Points : 23
Re andry.aime,

merci de te pencher sur mon problème, c'est cool de ta part

Alors j'ai testé ta méthode (dont je ne comprend pas la totalité), à quoi correspond cette ligne d'ailleur:
Code :
$password=$row["password"]
tu créés la variable $password, dans laquel tu inserres la valeur $row, mais pourquoi tu y as ajouter $row["password"], car $row récupère déjà la requête $result non?

Donc je disais, j'ai testé ta méthode et il me met ce message:
Citation:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\... on line 6
Ligne qui correspond à la boucle While.
benjamin002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 15h27   #8
Modérateur
 
Inscription : septembre 2010
Messages : 6 998
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 6 998
Points : 8 311
Points : 8 311
active le mysql.trace_mode au debut de ton code

Code :
ini_set('mysql.trace_mode', true);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/11/2010, 15h33   #9
Membre à l'essai
 
Benjamin
Inscription : novembre 2009
Messages : 122
Détails du profil
Informations personnelles :
Nom : Benjamin

Informations forums :
Inscription : novembre 2009
Messages : 122
Points : 23
Points : 23
C'est parfait tout fonctionne!
Je vous remercie andry.aime et stealth35 pour votre aide si précieuse et appliquée à chaque fois
benjamin002 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h22.


 
 
 
 
Partenaires

Hébergement Web