Bonjour,
je réalise un script pour la récupération du mot de passe oublié je suis dnas la phase de génération d'une clé j'arrive pas à insérer la clé généré dans la base de données donc voici mon code :
<?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 ce message erreur de syntaxe :
Erreur SQL ligne 21 : 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.'"';
http://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Par contre.. tu feras attention ... KEY / KEYS est un mot clé MYSQL .. il vaudrait donc mieux que tu nommes ton champ différemment.