update illogique après md5

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : update illogique après md5

par Snipy » 29 déc. 2007, 00:29

Je ne pense aps que ça changer a grand chose puisque la requete dans la BDD marche, de plus j'ai pas acces à l'install ou autre (hébergement chez 1&1)

par momox » 29 déc. 2007, 00:24

J'avais eu des problèmes d'updates qui ne fonctionnaient pas correctement a une époque, en réinstallant mysql c'était reparti comme avant, nickel ;)
@++

par Snipy » 28 déc. 2007, 21:51

Mince je vais faire comment moi ? :roll: :cry:

par Truc » 28 déc. 2007, 21:49

Ne serais ce pas un problème de guillemets apostrophes que j'aurais mal placé ?
Tu aurais eu un message d'erreur si ça avait été le cas.
Ceci dit les apostrophes autour de l'id sont à retirer mais ça devrait malgré tout fonctionner (pour ce cas précis) :-k

Mystère et boule de gomme... je vois pas :?

par Snipy » 28 déc. 2007, 18:31

mot d epasse est effectivement varchar(255) donc pas de problème de ce coté la.
et on a bien un membre d'id 1 :)


Si je met la requête dans phpmyadmin ça marche impect aussi :)

Concernant mysql_affected_rows() il me renvoit 0
Le problème vient donc de la. Lorsque la variable contient des données "brutes" la requete ne passe pas.

Ne serais ce pas un problème de guillemets apostrophes que j'aurais mal placé ?


Merci encore :D

par Truc » 28 déc. 2007, 18:04

ça ne doit pas être sorcier...
"mot_de_passe" est bien de type varchar (ou char) 32 (au moins) ?
tu as bien un membre ayant id = 1

Si le script se déroule correctement jusqu'aux màj et qu'avec une valeur en dur pour "mot_de_passe" il n'y à pas de raison que ça ne fonctionne pas avec la variable.

Et pour mysql_affected_rows() ?

Si tu exécutes cette requête directement dans phpmyadmin ça fonctionne ?

Code : Tout sélectionner

UPDATE membres SET mot_de_passe='e6414255ba9ac9dd8d568a9ba732764a' WHERE id=1
sans apostrophes pour les valeur numériques (id)

par Snipy » 28 déc. 2007, 16:32

La logique voudrait que mon champ new_pass servent en fait comme lieu de stockage de transition avant que mon champ mot de passe soit lui même changé.

new_pass change à chaque fois j'en suis sur. quand ej fais un echo à chaque fois ce n'est pas le même après le md5 la clé que je vois (avec un echo) n'est jamasi la même non plus. par contre après l'INSERT quand je regarde dans ma BDD dans le champ mot de passe c'est toujours la même clé

Par contre j'ai fait le test suivant :
		$query = mysql_query("UPDATE membres SET  mot_de_passe=1  WHERE id='".$id."'")or die (mysql_error()) ;
Donc mettre 1 comme mot de passe,

et l'update dans ce cas marche OoO c'ets à dire dans mon champ mot de passe j'ai bien 1

par Truc » 28 déc. 2007, 13:47

Et ce passe est également modifié ?
Si tu récupères toujours le même forcément tu mets à jour "mot_de_passe" avec la même valeur à chaque fois.

Après la requête de màj regarde le retour de mysql_affected_rows()

par Snipy » 28 déc. 2007, 12:52

new_pass contient un mot de passe générer aléatoirement avant l'envoie du lien par mail à l'utilisateur.

par un echo j'ai bien vérifié que
$mdp = mysql_result($sql, 0, 1);
	echo $mdp;
	$joseph = md5($mdp);
çà retournait bien mon mot de passe.

par Truc » 28 déc. 2007, 02:30

Tu effectues une requetes pour récupérer "new_pass" appartenant au membre $id.
Tu le passes en md5
Tu l'affectes au champ "mot_de_passe"
Tu mets à jour "activ_pass" et "new_pass" avec des chaines de caractères vides

La question est... que vaut "new_pass" au début de script ?

par Snipy » 28 déc. 2007, 00:14

Tout ce passe parfaitement bien, j'ai vraiment l'impression que c'est l'UPDATE qui foire
UPDATE membres SET mot_de_passe='e6414255ba9ac9dd8d568a9ba732764a' WHERE id='1'
Bonne soirée

par Truc » 27 déc. 2007, 23:56

Est-ce que le script se déroule jusqu'aux mises à jour (UPDATE) ?
Affiche les requêtes générées avant exécution pour vérifier leur construction et éventuellement suivre les conseils de débogage.

update illogique après md5

par Snipy » 27 déc. 2007, 21:12

Rebonjour,

Voila 2h que je m'arrache els cheveux sur un bout de code minable


Tellement faible que j'ai du y glisser uen erreur que je n'arrive toujours pas à trouver.

pour résumé ce code récupère une clé et un nouveau mot de passe qui sont dans un lien que le membre à reçu par mail (après oublie de mot de passe) et l'objectif est de lui créer un nouveau pass.
Voici le code

if($_GET['activ_pass'])
{
	$activ_pass = mysql_real_escape_string($_GET['activ_pass']);
	$id = (int) $_GET['m'];
	
	$sql= mysql_query("SELECT id, new_pass FROM membres WHERE id='".$id."' AND activ_pass='".$activ_pass."'");
	
	if(!empty($sql))
	{
	$mdp = mysql_result($sql, 0, 1);
	$mdp = md5($mdp);

			//Mise à jour du nouveau password
		$query = mysql_query("UPDATE membres SET  mot_de_passe='".$mdp."'  WHERE id='".$id."'")or die (mysql_error()) ;

			//Effacement des clées d'activations.
			$sql= mysql_query("UPDATE membres SET activ_pass = '', new_pass = '' WHERE id = '" . $id . "'");
	echo '<p class="confirmation">Vous avez bien modifier votre mot de passe, vous pouvez maintenant vous connecter avec votre nouveau mot de passe (fournie dans le mail d\'activation).</p>';
	}
Le soucis vient de la mise à jour du password, aucune erreur, mais quand je regarde dans la BDD le nouveau pass inséré, c'est toujours le même j'ai beau m'envoyer 15-50 pass différent, c'est le même passe crypté que je retrouve dans ma BDD :evil:

pSurement une erreur de ma part, mais j'avoue que je ne la trouve pas.

merci d'avance :)