Bête Insert qui plante ... - 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 : Bête Insert qui plante ... (/showthread.php?tid=2677) |
Bête Insert qui plante ... - Stefff - 21-06-2008 Voilà, j'ai décidé d'un petit peu m'y mettre vu que la fin des examens approche à grands pas ^^ Comme à mon habitude, je me lance et j'apprends au fur et à mesure. J'ai tenté de faire un BETE (mais quand je dis bête, c'est vraiment bête) script d'inscription. première page, pas de problèmes dans tous les cas, un formulaire qui envoie les infos a ma deuxième page. Et c'est là que ça se corse. Première étape : un bête script qui récupère et insère les infos dans la base de données. --> Pas de problèmes Deuxième étape : vérification de l'existence ou non du pseudo ou de l'adresse email dans la table. Et c'est là que ça veut pas (NB : une boucle aurait été plus sympa pour les vérifications, mais ça ne marche déjà pas comme ça, donc ...) J'ai essayé de découper morceau par morceau, à ce moment là, pas de problèmes pour l'exécution, mais après, lorsque tout est assemblé, j'ai droit à un : Citation :Impossible de se connecter : 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 ''members' ('id', 'username', 'password', 'authlevel', 'email') VALUES('', '1', '' at line 1 Voilà le code Code PHP :
Merci d'avance ^^ RE: Bête Insert qui plante ... - Eluox - 21-06-2008 $reg = mysql_query("INSERT INTO 'members' (id, username, password,) ect Sans les quotes RE: Bête Insert qui plante ... - chobedo - 21-06-2008 $reg = mysql_query("INSERT INTO members (id, username, password,) Sans les quotes autour de la table aussi( ou alors des `). VALUES('', '$username', '$password', '0', '$email') la il inserera $username, $password et $email alors que tu veux insérer leurs valeurs donc : VALUES('', ' " . $username . " ', ' " . $password . " ', '0', ' " . $email . " ') RE: Bête Insert qui plante ... - Eluox - 21-06-2008 Fiou, j'devrais dormir plus souvent, avait pas tout vu ^^ RE: Bête Insert qui plante ... - Stefff - 21-06-2008 xD Merci ^^ €dit : J'avais mis un edit qui servait a rien xD €dit qui sert : apparement, ça ne marche pas top : il ne repère le pseudo/email existant que s'il est vide. Explications : il ne détecte pas d'égalité si je mets deux fois "stefff" lors de deux inscription, idem pour l'email, mais si je mets 2 fois un champ vide, là il s'en rend compte ... idée ? RE: Bête Insert qui plante ... - Yoda54 - 22-06-2008 chobedo a écrit :VALUES('', '$username', '$password', '0', '$email') Bonjour, La requête est entre guillemets doubles, les variables seront donc remplacées par leurs valeurs lors de l'exécution de la requête et la concaténation est donc inutile. Sinon, c'est du détail, mais plutôt que d'initialiser $ok à 1 et de la passer à 0 à chaque erreur, il est possible de l'initialiser à 0 à chaque erreur et d'utiliser isset dans la condition (pas de création de $ok si ce n'est pas nécessaire). RE: Bête Insert qui plante ... - z3d - 22-06-2008 Tout d'abord je pense que tu devrais, en premier lieu, vérifier si le formulaire n'est pas soumis vide, cela évitera des requêtes "vide" et de se protéger de ce que l'on nomme le SQL injection. Petite parenthèse : Le SQL injection permet si tu ne protèges pas tes chaines, de pouvoir faire ressortir des informations importante et mettre à mal la sécurité de ton site. Commençons donc par le début : Code PHP :
Et voilà je pense t'avoir donné toutes les étapes essentiel au bon déroulement de ton script si quelque chose te tracasse n'hésite pas à poser des questions. Par conter pour le mot de passe, pour des raisons de sécurité je te conseil vivement de crypter celui-ci en utilisant la fonction sha1(). RE: Bête Insert qui plante ... - Stefff - 22-06-2008 Grand merci à tout le monde pour les coups de mains ^^ ça donne encore plus envie de s'investir xD Reste plus qu'à rajouter certains paramètres Je posterai ici une fois que j'aurai fini €dit : pourrait-on me donner un coup de main pour la compréhension de cette ligne? Code PHP :
RE: Bête Insert qui plante ... - Anthor - 22-06-2008 Si l'entier du résultat n'est pas égal à zéro. RE: Bête Insert qui plante ... - Stefff - 22-06-2008 xD Je voulais savoir pourquoi la variable $uResult renvoyait elle même les informations sous la forme d'un tableau J'ai réussi à intégrer les infos de z3d dans mon propre code Maintenant une petite question au niveau de l'avis : pour les réglementation de longueur (par exemple), est-il mieux de vérifier en javascript ou par le php ? (idem pour la validité de l'email) ... Le javascript à l'avantage d'afficher directement sur le formulaire d'inscription, mais dans le cas où il est désactivé, c'est plutôt génant ... Ou faut-il, afin d'avoir un résultat optimal, faire une vérification dans le formulaire, pour le confort de l'utilisateur, et vérifier dans le code php afin d'avoir une sécurisation ? Deuxième petite question mysql_real_escape_string est-il suffisant ? ou faut-il aussi passer par html entities, addslash, etc ? Merci encore pour vos réponses ^^ |