probleme mysql - 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 : probleme mysql (/showthread.php?tid=559) Pages :
1
2
|
RE: probleme mysql - Roworll - 22-12-2006 Pour ma part, je rajouterai une gestion pour les guillemets. si le serveur que tu utilises est en Magic Quotes On et que tu passe sur une version avec cette option à off, ça risque de faire mal Code PHP :
Enfin, je recontrôlerais TOUS les champs du formulaire POST. Même si les valeurs sont vérifiées à l'envoi par du Javascript, il est super façile de passer outre cette vérification et d'envoyer des valeurs non conformes... Donc, il faut retester systématiquement les valeurs reçues et renvoyer sur le formulaire et/ou une page d'erreur si il y a un problème. RE: probleme mysql - zneman - 22-12-2006 ok merci :p mais je cherche deja a trouver pourquoi il me met le message d'erreur (voir premier message) RE: probleme mysql - Roworll - 22-12-2006 Arf ok, je me suis un peu emballé ^^ Ce genre de truc ressemble effectivement à un soucis de connexion à la DB. Vérifies bien que tu as un Link actif créé par mysql_connect() vers ta base de données et que tu as bien sélectionné la base en question (mysql_select_db()). Et pour reprendre les sages paroles d'Aramiil : Citation :(2) tu n'utilises pas de variable pour nommer ton lien à la bdd, et donc tu n'en spécifie pas, et c'est une mauvaise chose ;-) RE: probleme mysql - zneman - 22-12-2006 lol merci de tes conseils ^^ j'ai réussit il y a deja quelques minutes maintenant :p En effet erreur toute bete: Code PHP :
voila ce que j'avais oublié: mysql_connect($host,$username,$password); mysql_select_db($bdd_name); ^^ Probleme réglé :p allé hop :p xD RE: probleme mysql - gtsoul - 22-12-2006 Quelques remarques... require_once au lieu de require, cela évite les inclusions en boucle, dans ton exemple pas de risques, mais ca t'arrivera un jour $var = htmlentities($_POST['var']); au lieu de $var = $_POST['var']; afin d'éviter les injections de code et injections sql tu insères un $id++ après $id=0; donc tu insereras toujours $id=1 passe ton champ id en autoincrement et oublies le dans ta requete insert (comme ca l'id s'incrementera automatiquement) toujours dans la requete insert, les string (caractères) comportent des simple quote ' ' mais pas les valeurs numériques. cela ne va pas changer grand chose car php est très permittif, mais ca évite un castage qui ne sert à rien " $int " : int(type de départ)->string(conversion car requete = string)->int(type arrivee dans la base) : 2 casts " '$string' " : string (pas de cast) " '$int' " : int(type de départ)->string(conversion pour requete) ->string( les ' ' annulent la conversion)->int(conversion forcee pour rentrer dans la base) attacher ton identifiant de connection au mysql_query RE: probleme mysql - NicoMSEvent - 22-12-2006 il y a un tutorial pour PHP5 en POO très bien fait, mais le hic : il faut PHP5 pour le faire marcher. J'ai rajouté un nouveau tutorial : un code fonctionnel mais simplifié pour php4, pas très orienté objet, mais ça marche assez bien. RE: probleme mysql - Aramiil - 22-12-2006 gtsoul a écrit :$var = htmlentities($_POST['var']); au lieu de $var = $_POST['var']; Pas encore lu le reste (j'éditerais), mais attention, htmlentities ne protège pas des injections sql si il est employé comme ceci. Il faut ajouter le second paramètre à ENT_QUOTES, sinon ça ne change rien. RE: probleme mysql - zneman - 22-12-2006 oki oki, je vais voir ca merci bien :p RE: probleme mysql - Loetheri - 22-12-2006 Pour se protéger des attaques SQL, utilisez une véritable fonction prévue à cet effet : mysql_real_escape_string(). html_entities n'est à utiliser que lors de l'affichage (Pourquoi insérer des caractères plus longs alors que les caractères originaux sont inoffensifs dans la BD ?) RE: probleme mysql - Aramiil - 22-12-2006 html_entities a l'avantage de ne pas re-demander de traitement ulterieurs dans certains cas (pseudonyme, par exemple), ce qui ne serait pas le cas avec un mysql_real_escape_string(). De plus, cette fonction ne marche que si ont utilise mysql (et de préférence qu'on fourni un identifiant valide). |