matt.webcroisieres Posted June 29, 2011 Share Posted June 29, 2011 Bonsoir,Je dois pour un module vérifier des logins (sans session). J'ai donc ait le code si dessous, mais lorsque je clique sur le bouton submit, rien ne se passe... Je suppose donc que la function retourne false. Mais je ne vois pas ou est mon erreur...Merci d'essayer de m'aider si vous avez des idées.fichier tpl: > <form method="post" id="myform" action="/modules/blocktravelnoces/blocktravelnoces_customers.php" target="_blank" class="std"> </pre> <table> Login: <input type="text" name="loginNoces" id="loginNoces" value=""/> Mot de passe: <input type="password" name="mdpNoces" id="mdpNoces" value="" /> <input type="submit" name="submitLogin" id="submitLog" value="{l s='ok'}" class="button_mini_noces" /> </table> <br> </form> ficher javascript $("#myform").submit(function(){ var code = $("input[type=text]").val(); var password = $("input[type=password]").val(); var data2={identifiant: code, pass: password}; var val = "erreur"; $.ajax({ type: "POST", url: "/modules/blocktravelnoces/script_confirmer.php", data: data2, async: false, success: function(data) { val = data; } }); if (val == "success") { return true; } else { return false; } }); fichier script_confirmer.php require(dirname(__FILE__).'/../../config/config.inc.php'); include (dirname(__FILE__).'/../../init.php'); $code = $_POST['identifiant']; $password = $_POST['pass']; $val = erreur; $noces = Db::getInstance()->executeS("SELECT password, id_noces FROM `prestashop`.`"._DB_PREFIX_."voyage_de_noces` WHERE id_noces = ".$code); foreach ($noces as $noce) { if (($code == $noce['id_noces']) && ($password == $noce['password'])) { $val = "success"; } else { $val = "erreur"; } } return $val; Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 29, 2011 Share Posted June 29, 2011 Tu as Firebug ? Utilises l'onglet Console pour voir si déjà l'appel Ajax est bien fait, puis regarde la réponse de celui-ci.De plus, tu attends quoi de ton "return true;" ?Et pourquoi utiliser une variable "val" dans le JS ?Directement depuis le succes : success: function(data) { if (data == 'success') { $("#myform").submit(); } return false; } Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 29, 2011 Author Share Posted June 29, 2011 Décidément dès qu'il s'agit de javascript tu es là MerciAlors quand j'utilise la console, dans la rubrique post, l'identifiant est vide mais par contre pour le mot de passe ça me renvoie le mot de passe qui me permet de me connecter au Back Office. Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 29, 2011 Share Posted June 29, 2011 Il faut mettre : (les apostrophes) var data2={'identifiant': code, 'pass': password}; Ensuite, c'est bizarre qu'il renvoie quelque chose ? Tu veux dire qu'il renvoie autre chose que success ou erreur ?D'ailleurs, préfères toujours la notation "en ligne" des conditions à 2 états : return (($code == $noce['id_noces']) && ($password == $noce['password']) ? 'success' : 'erreur'); C'est plus rapide à écrire, et plus rapide tout court. EDIT : tu es en dans une boucle 'foreach', j'avais pas vu. Mais ! du coup, tu boucles tout le temps, si ta valeur est success, ça boucle encore et ta valeur redevient erreur. foreach ($noces as $noce) { if (($code == $noce['id_noces']) && ($password == $noce['password'])) { return 'success'; } } return 'erreur'; Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 29, 2011 Author Share Posted June 29, 2011 J'ai ajouté les apostrophes, et même problème.En faite normalement le POST de login doit récupérer des chiffres et le POST du mot de passe doit récupérer le mot de passe qui va avec. Mais là, le post récupère le mot de passe nécessaire pour l'accès au Back Office... Bizarre lolDu coup je ne sais pas pourquoi les valeurs ne sont pas envoyé..Et j'ai pas compris ta ligne de code lol et ou la mettre... Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 29, 2011 Share Posted June 29, 2011 Oui j'ai édité mon message en haut Mais, j'avais pas vu non plus ... Pour récupérer 'code' et 'password' : $.ajax({ type: "POST", url: "/modules/blocktravelnoces/script_confirmer.php", data: {'identifiant' : $('#loginNoces').val(), 'pass' : $('#mdpNoces').val()}, Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 29, 2011 Author Share Posted June 29, 2011 Rectification faite.Lorsque je met les bon login, le post récupère uniquement le mot de passe mais pas l'identifiant.Et quand je mets de mauvais login, le post récupère le mot de passe du Back Office Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 29, 2011 Author Share Posted June 29, 2011 Maintenant je recueil bien les logins.. Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 29, 2011 Share Posted June 29, 2011 Mais qu'entends-tu par recueillir les logins ?Depuis ton script PHP ? Car apparemment il ne renvoie que "success" ou "erreur" ? Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 29, 2011 Author Share Posted June 29, 2011 je veux dire dans la console, dans la rubrique POST j'ai bien mes logins...Désolé je m'exprime mal Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 29, 2011 Share Posted June 29, 2011 Ok et la valeur renvoyée est donc "erreur" ou "success" ou autre ?Par contre je relis ton code, je ne comprends au final pas ....Tu fais une requête avec un WHERE id = code, donc sensé renvoyer une seule colonne ?Pourquoi ensuite faire un foreach ?Et surtout, pourquoi ne pas faire un : SELECT blabla WHERE id_noces = $code AND password = $password Et tester si un résultat existe ? Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 29, 2011 Author Share Posted June 29, 2011 Oui j'ai bien remplacé le code...j'imagine que la valeur renvoyé se trouve dans réponse ? Il n'y a rien... Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 29, 2011 Author Share Posted June 29, 2011 Et la valeur ne renvoie bien rien, si data = a erreur ou success, le résultat est le même Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 29, 2011 Share Posted June 29, 2011 Du coup tout remplacer par : require(dirname(__FILE__).'/../../config/config.inc.php'); include (dirname(__FILE__).'/../../init.php'); return (Db::getInstance()->executeS("SELECT password, id_noces FROM `prestashop`.`"._DB_PREFIX_."voyage_de_noces` WHERE id_noces = ".$_POST['identifiant']." AND password=".$_POST['pass']) !== false ? 'success' : 'erreur'); Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 29, 2011 Author Share Posted June 29, 2011 Toujours pareil...Je suis désolé mais je dois te laisser pour se soir, je vais louper mon train sinon.J'espère que demain tu seras disponible, dans tous les cas merci beaucoup pour ton aide! Link to comment Share on other sites More sharing options...
[PrestaModule] JS Posted June 29, 2011 Share Posted June 29, 2011 Salut,Peut être en remplaçant return $val; par echo $val; dans ton fichier "script_confirmer.php". Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 29, 2011 Author Share Posted June 29, 2011 Même problème... Merci Link to comment Share on other sites More sharing options...
[PrestaModule] JS Posted June 29, 2011 Share Posted June 29, 2011 D'après moi laisse quand même le echo. Le return s'utilise normalement dans une fonction. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 Bonjour tout le monde... Bon je me lance dans mon problème, si des personnes ont des idées.. Je suis toujours preneur tpl: > <form method="post" id="myform" action="/modules/blocktravelnoces/blocktravelnoces_customers.php" target="_blank" class="std"> </pre> <table> Login: <input type="text" name="loginNoces" id="loginNoces" value=""/> Mot de passe: <input type="password" name="mdpNoces" id="mdpNoces" value="" /> <input type="submit" name="submitLogin" id="submitLog" value="{l s='ok'}" class="button_mini_noces" /> </table> <br> </form> js: $("#myform").submit(function(){ $.ajax({ type: "POST", url: "/modules/blocktravelnoces/script_confirmer.php", data: {'identifiant' : $('#loginNoces').val(), 'pass' : $('#mdpNoces').val()}, async: false, success: function(data) { if (data == 'erreur') { $(this).submit(); } return false; } }); }); script_confirmer.php require(dirname(__FILE__).'/../../config/config.inc.php'); include (dirname(__FILE__).'/../../init.php'); echo (Db::getInstance()->executeS("SELECT password, id_noces FROM `prestashop`.`"._DB_PREFIX_."voyage_de_noces` WHERE id_noces = ".$_POST['identifiant']." AND password=".$_POST['pass']) !== false ? 'success' : 'erreur'); ?> Déjà merci à vincent-decaux qui m'a bien aidée hier Et grace à lui mon fichier script_confirmer.php renvoie 'erreur' mais tout le temps... que mes login soit bon ou non Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 Ce que je ne comprends pas, c'est que même si cela renvoie uniquement 'erreur' le code devrait bloquer le submit et rien devrait se passer. Là, ça m'ouvre la nouvelle page dans les 2 cas, que les logins soit bon ou non. Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 30, 2011 Share Posted June 30, 2011 echo (Db::getInstance()->getRow("SELECT password, id_noces FROM `prestashop`.`"._DB_PREFIX_."voyage_de_noces` WHERE id_noces = ".$_POST['identifiant']." AND password=".$_POST['pass']) !== false ? 'success' : 'erreur') Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 Merci. mais.... toujours pareil lol Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 30, 2011 Share Posted June 30, 2011 Il te renvoie toujours 'erreur' ? Tu as vu aussi que dans le JS tu as : if (data == 'erreur') { Ce n'est pas plutôt 'success' ?Et je suis vraiment sûr que getRow renvoie false si aucun résultat n'est trouvé. Tes mots de passe ne sont pas hashés dans ta base ? Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 Voici mon code javascript, maintenant le submit ne s’exécute pas vu qu'il renvoie false. Si val = true le submit s'éxécute.Alors le problème doit venir du script ? Et mes données sont bien valide.... $("#myform").submit(function(){ var val; $.ajax({ type: "POST", url: "/modules/blocktravelnoces/script_confirmer.php", data: {'identifiant' : $('#loginNoces').val(), 'pass' : $('#mdpNoces').val()}, async: false, success: function(data) { if (data == 'success') { $(this).submit(); } else val = false; } }); return val; }); Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 30, 2011 Share Posted June 30, 2011 Est-ce que déjà le script PHP renvoie bien 'success' si un compte a été trouvé ? Ou renvoie-t-il toujours 'erreur ' ?A voir dans Firebug, ou en faisant un "alert(data);". Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 Ça renvoie toujours 'erreur' :-/ Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 30, 2011 Share Posted June 30, 2011 En clair ta requête renvoie toujours 'false', aucun résultat n'a été trouvé. Regarde de ce côté, tes mots de passe sont en clair dans ta base ? Tu es sur des logins / mdp ?Après, j'ai peut être fait une erreur de syntaxe, écrire du code vite sans tester c'est jamais le top.Tu peux faire un $result = Db::getInstance() bla bla ....Et un var_dump($result); pour voir le résultat. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 Mes mots de passes sont en clair, je suis sûr de mes logins... (après plusieurs vérification)Et avec le var_dump, ca me renvoie erreur, que les log soit bon ou nonps: je ne pense pas que l'erreur vienne de toi, la requête m'a l'air bonne Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 30, 2011 Share Posted June 30, 2011 Tu as fait : $result = Db::getInstance()->getRow("SELECT password, id_noces FROM `prestashop`.`"._DB_PREFIX_."voyage_de_noces` WHERE id_noces = ".$_POST['identifiant']." AND password=".$_POST['pass']); var_dump($result); Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 oui, en faite lorsque je fais la requete = "SELECT password, id_noces FROM `prestashop`.`"._DB_PREFIX_."voyage_de_noces`" Ca me renvoie uniquement la première ligne de ma table, et lorsque je rajoute le WHERE = "SELECT password, id_noces FROM `prestashop`.`"._DB_PREFIX_."voyage_de_noces` WHERE id_noces = ".$_POST['identifiant']." AND password=".$_POST['pass']" la requete me renvoie false Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 Lorsque je met uniquement le code ci-dessous, ça marche... "SELECT password, id_noces FROM `prestashop`.`"._DB_PREFIX_."voyage_de_noces` WHERE id_noces = ".$_POST['identifiant'" Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 30, 2011 Share Posted June 30, 2011 Tu en fais la conclusion qu'il faut j'espère ?Je pense que tu as quelques notions. C'est que le couple login / pass n'est pas bon. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 Bah oui j'ai fait cette conclusion, mais je ne vois pas ou est cette erreur ! Bref on se rapproche du but ^^ Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 30, 2011 Share Posted June 30, 2011 Je pourrai pas t'aider là.Écris la requête que tu fais dans PHPMyAdmin avec les identifiants envoyés.Tu peux même faire : echo "SELECT password, id_noces FROM "._DB_PREFIX_."voyage_de_noces` WHERE id_noces = ".$_POST['identifiant']." AND password=".$_POST['pass']; Et copier / coller ce qui va sortir dans PhpMyAdmin. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 J'ai une question... dans ma base de données, si j'utilise le mot 'password' il se crypte pas automatiquement ?Parce que j'utilise SQLyog, et le mot password dans le create table est en bleu... Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 30, 2011 Share Posted June 30, 2011 Hmm, "password" est un mot réservé sous MySQL.... J'ai oublié.Change le nom du champ dans ta base et ta requête. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 Toujours le même problème...ca me rend fou lolEDIT: je ne comprends pas pourquoi le mot de passe de marche pas... Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 30, 2011 Share Posted June 30, 2011 Gné ... Je suis passé à côté : echo (Db::getInstance()->getRow("SELECT password, id_noces FROM `prestashop`.`"._DB_PREFIX_."voyage_de_noces` WHERE id_noces = ".$_POST['identifiant']." AND password='".$_POST['pass']."'") !== false ? 'success' : 'erreur') password étant un String, il faut les apostrophes autour de la valeur. Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 AMEN, merci maintenant ca renvoie bien success quand les log sont bon, et erreur quand ils ne le sont pas.maintenant le submit ne marche pas quand c'est ok, je vais regarder ca. Encore merci, le plus gros est fait Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 En faite le submit marche bien, c'est juste que ca ne renvoie pas les données sur ma page, mais le problème est résolu Le reste doit se faire sens problème Merci beaucoup !j'ai juste une derniere question à propos de javascript, aprés quand c'est 'erreur' je voudrait rajouter une div et écrire du texte dedant. Je dois créer une div dans le tpl et lorsque c'est 'erreur' je fait un $('madiv').text('text'); ? Link to comment Share on other sites More sharing options...
Vincent Decaux Posted June 30, 2011 Share Posted June 30, 2011 Oui c'est le mieux, ou faire un truc plus sympa : $('Mauvais login ou mot de passe').fadeIn().appendTo('body').delay(6000).fadeOut(); Link to comment Share on other sites More sharing options...
matt.webcroisieres Posted June 30, 2011 Author Share Posted June 30, 2011 Merci infiniment pour tout ;-) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now