Récupération mot de passe/ généré une clé unique

Fermé
challenger11 Messages postés 16 Date d'inscription lundi 30 mars 2015 Statut Membre Dernière intervention 16 avril 2015 - 16 avril 2015 à 11:41
ludo1325 Messages postés 149 Date d'inscription samedi 27 juin 2009 Statut Membre Dernière intervention 23 juin 2015 - 16 avril 2015 à 14:11
Bonjour,
Je veux réaliser un script pour récupérer un mot de passe oublié. Je bloque dans la parti de génération du clé , en effet j'arrive pas à insérer la clés dans ma base de données voici mon code pour cette partie :
<?php

mysql_connect('localhost','root','');
mysql_select_db('utilisateur');
if (isset($_POST['envoyer'])&&(!empty($_POST['email'])))
{
$email = $_POST['email'];

$sql = "SELECT id, pseudo, email FROM users WHERE email='".mysql_real_escape_string($email)."' LIMIT 1" ;
$res = mysql_query($sql)or exit('Erreur SQL ligne '.__LINE__.' : '.mysql_error());
if (@mysql_num_rows($res)!=1)  die('Email inconnu');
$row = mysql_fetch_assoc($res);
$pseudo = $row['pseudo'];
$umail = $row['email'];
$uk=$row['id'];

//généré une clé unique
$key = sha1(uniqid(rand()));
$sql = 'UPDATE users SET keys="'.$key.'" WHERE id="'.$uk.'"';
$res = mysql_query($sql)or exit('Erreur SQL ligne '.__LINE__.' : '.mysql_error()) ;

}
?>

<html>
<head></head>
<body>
<form name="f" method="post">
<fieldset>
	<legend>Mot de passe oublié ?</legend>
	<label for="email">Email</label>
	<input name="email" placeholder="Mail@domain.com" type="email"><br>
	<input name="envoyer" type="submit" value="envoyer">
</fieldset>
</form>
</body>
</html>
 

Il m'affiche cette erreur :Erreur SQL ligne 22 : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
c'est à dire dans cette requête:
$sql = 'UPDATE users SET keys="'.$key.'" WHERE id="'.$uk.'"'; 






A voir également:

1 réponse

ludo1325 Messages postés 149 Date d'inscription samedi 27 juin 2009 Statut Membre Dernière intervention 23 juin 2015 33
16 avril 2015 à 14:11
Bonjour,

la requête fonctionne correctement chez moi.

Si ce n'est pas déjà fait, vérifie dans ta base le type du champ keys.
- Vérifie que la variable $uk contiennent bien un identifiant
- Vérifie que la valeur de $key correspondent bien au type du champ dans la base, (le mieux d'après moi serait un VARCHAR).

J'ai par contre essayé avec une instance de PDO
0