JeuWeb - Crée ton jeu par navigateur
ERREUR SQL '@' HELP ME ... - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : ERREUR SQL '@' HELP ME ... (/showthread.php?tid=5245)



ERREUR SQL '@' HELP ME ... - Redoine - 15-02-2011

Bonjour,

Me revoilà avec de nombreuse question.
J'ai fait un code qui offre une récupération de mot de passe.
Jusque là tout va bien seulement lorsque le moment est venue, d'envoyez un mail à l'e-mail entrer
et que un nouveau mot de passe est inséré via la requête INSERT INTO ...
Les choses commencent a mal tourné :
- Ma fonction Sendmail fonctionne parfaitement
- Le hic c'est que c'est la requete SQL qui me renvoie une petite erreur
C'est le caractère '@' qui n'est pas accepter pourtant, lors de l'inscription j'insert un email ...
Je vois pas pourquoi '@' n'est pas accepter ...
Assez de blabla ...
Voici le code source de ma page connexion.php :

function decode($pass_coder)
{
$pass_str =
mcrypt_ecb(MCRYPT_TripleDES, "Secret", $pass_coder, MCRYPT_DECRYPT);
return $pass_str;
}
$req = mysql_query('select email from membres');
while ($down = mysql_fetch_array($req))
{
if (isset($_POST['mail']))
{
if ($_POST['mail'] != $down['email'])
{
echo '<script>alert("E-mail invalide");</script>';
header("Refresh: 0.1; URL=connexion.php");
}
else
{
header("Location: connexion.php?verification=1&email=".encode($_POST['mail'])."");
}
}
}
//ON PASSE A LA REPONSE
$req2 = mysql_query('select reponse from membres');
while ($down2 = mysql_fetch_array($req2))
{
if (isset($_POST['reponse']))
{
if($_POST['reponse'] == $down2['reponse'])
{
echo '<script>alert("Un mail vous a été envoyez contenant votre nouveau mot de passe")</script>';
$value=array(
'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z',
'1','2','3','4','5','6','7','8','9','0');
$valueLEN=count($value);
$valueLEN=$valueLEN-1;
$new_pass='';
for($i=0; $i< 6; $i++)
{
$caractere = mt_rand(0,$valueLEN);
$new_pass.=$value[$caractere];
}
if ($i==6)
{
mysql_query('INSERT INTO membres(password) VALUES ('.$new_pass.') WHERE email='.decode($_GET['email']).'') or die(mysql_error());
SendMail(''.decode($_GET['email']).'',$new_pass);
header('Location: connexion.php');
}
}
else
{
header('Location: connexion.php');
}
}
}
Je suis tout ouïe (enfin je suis prêt a recevoir toutes vos question et suggestion)
Si quelqu'un peut m'aider se serait fun mais je doute pas de la qualité de ce forum!


RE: ERREUR SQL '@' HELP ME ... - djidi - 15-02-2011

Ton INSERT ne serait pas plutot un UPDATE ?

mysql_query("UPDATE membres SET password = '".$new_pass."' WHERE email = '".decode($_GET['email'])."'");

De plus, dans ta requête tu envoie directement les données sans les entourer de quotes.


RE: ERREUR SQL '@' HELP ME ... - Redoine - 15-02-2011

Je suis étourdie certes UPDATE serait le mieux mais la requete fonctionne pas du moins lorsque je vais sur PHPmyADMIN, le mot de passe ne change pas ...


RE: ERREUR SQL '@' HELP ME ... - djidi - 15-02-2011

Au début du script tu utilises $_POST['mail'] et ensuite $_GET['email']


RE: ERREUR SQL '@' HELP ME ... - niahoo - 15-02-2011

Tiens, un coup d'indentation gratuite !

function decode($pass_coder) {
$pass_str = mcrypt_ecb(MCRYPT_TripleDES,
"Secret",
$pass_coder,
MCRYPT_DECRYPT);
return $pass_str;
}
$req = mysql_query('select email from membres');
while ($down = mysql_fetch_array($req)) {
if (isset($_POST['mail'])) {
if ($_POST['mail'] != $down['email']) {
echo '<script>alert("E-mail invalide");</script>';
header("Refresh: 0.1; URL=connexion.php");
}
else {
header("Location: connexion.php?verification=1&email=".encode($_POST['mail'])."");
}
}
}
//ON PASSE A LA REPONSE
$req2 = mysql_query('select reponse from membres');
while ($down2 = mysql_fetch_array($req2)) {
if (isset($_POST['reponse'])) {
if($_POST['reponse'] == $down2['reponse']) {
echo '<script>alert("Un mail vous a été envoyez contenant votre nouveau mot de passe")</script>';
$value=array(
'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z',
'1','2','3','4','5','6','7','8','9','0');
$valueLEN=count($value);
$valueLEN=$valueLEN-1;
$new_pass='';
for($i=0; $i< 6; $i++) {
$caractere = mt_rand(0,$valueLEN);
$new_pass.=$value[$caractere];
}
if ($i==6) {
mysql_query('INSERT INTO membres(password)
VALUES ('.$new_pass.')
WHERE email='.decode($_GET['email']).'')
or die(mysql_error());
SendMail(''.decode($_GET['email']).'',$new_pass);
header('Location: connexion.php');
}
}
else {
header('Location: connexion.php');
}
}
}

Tu ne peux pas faire ça
Code :
echo '<script>alert("E-mail invalide");</script>';
header("Refresh: 0.1; URL=connexion.php");


Essaie de mettre un espace avant la parenthèse, peu de chances que ça change grand chose ceci-dit
Code :
INSERT INTO membres(password)

fake edit : ah non, on fait update maintenant c'est vrai.


Bien vu djidi Wink


RE: ERREUR SQL '@' HELP ME ... - Argorate - 15-02-2011

HS : J'avoue que mes yeux ont gripper quand j'ai vu echo '<script>alert("E-mail invalide");</script>'; ^^


RE: ERREUR SQL '@' HELP ME ... - pascal - 15-02-2011

pas optimisé ce code, pas la peine de faire un while pour tester l'existence du mail dans la base de données.


RE: ERREUR SQL '@' HELP ME ... - niahoo - 15-02-2011

echo '<script>alert("E-mail invalide");</script>'; est tout à fait valide (php + HTML5) ou du moins fonctionne.

Ce qui est incorrect c'est d'envoyer un header HTTP ensuite.