UPDATE ne fonctionne pas - SQL/NoSQL - Programmation
Marsh Posté le 23-06-2009 à 13:19:28
essaie d'afficher l'erreur php, qui fournira sans doute une dindication sur le pourquoi du comment. (cf la valeur Display_Errors du php.ini)
Marsh Posté le 23-06-2009 à 13:50:46
Profites-en pour afficher l'erreur SQL :
...or die (mysql_error());
Marsh Posté le 23-06-2009 à 14:36:22
D'après l'erreur que je vois, c'est mon row qui a échoué puisque j'ai le message row échoué et c'est un message à mettre en cas d'erreur..
Mon code avec le row inclus:
Code :
|
Voici le screen de l'erreur:
Marsh Posté le 23-06-2009 à 14:48:23
mysql_fetch_array retourne un tableau de chaînes qui correspond à la ligne récupérée ou FALSE s'il n'y a plus de lignes.
mysql_num_rows retourne le nombre d'enregistrements.
Je serais toi, je commencerais par regarder combien j'ai d'enregistrements avant de boucler dessus
A priori, je dirais que ta requête ne retourne rien. Essaye de l'afficher avec un echo $query et de l'exécuter dans ton interface SQL (phpmyadmin, par exemple)...
Marsh Posté le 23-06-2009 à 14:48:28
mysql_fetch_array() renvoie un array. je sais pas ce que t'essaies de faire à la ligne 19 en créant un cookie avec un array, mais ça m'étonnerait que ça donne le comportement souhaité
Marsh Posté le 23-06-2009 à 14:55:42
Ce que j'essaie de faire, c'est de faire un sorte que les personnes inscrites sur un site puissent se connecter à leur compte grâce à leur mot de passe et leur adresse mail (je précise que ce n'est qu'un enregistrement et non une réalité donc pas obliger que ce soit un truc costaud)..
Marsh Posté le 23-06-2009 à 15:04:34
absot77 a écrit : Ce que j'essaie de faire, c'est de faire un sorte que les personnes inscrites sur un site puissent se connecter à leur compte grâce à leur mot de passe et leur adresse mail (je précise que ce n'est qu'un enregistrement et non une réalité donc pas obliger que ce soit un truc costaud).. |
regarde la doc de SetCookie() :
Citation : |
à aucun moment il ne prend un array en paramètre, or toi tu lui transmets un array ($row) => erreur
Marsh Posté le 23-06-2009 à 15:06:18
ton mysql_num_rows, faut pas le faire sur la requete $query, mais sur le résultat $result.
Marsh Posté le 23-06-2009 à 15:24:26
Ca m'en fait des erreurs...
Voilà j'ai l'impression que ça fonctionne..
Je peux me connecter et me déconnecter (avec les bons identifiants bien sûr) et aucun message d'erreur..
Je vous remontre code final:
Code :
|
Marsh Posté le 23-06-2009 à 15:26:17
Citation : |
non mais tu es conscient de ce que tu fais ou bien.... ?
Marsh Posté le 23-06-2009 à 15:26:59
O_o
la sauf erreur de ma part tu mets dans un cookie le mdp en clair??
Edit: Grillaid
Marsh Posté le 23-06-2009 à 15:29:49
C'est la première fois que je fais ça donc je peux faire des erreurs..
Comment je peux faire pour que ça ne soit pas vu?
Marsh Posté le 23-06-2009 à 15:35:01
Si à la place de
Code :
|
Je fais
Code :
|
Où $mail est égale seulement à l'adresse mail, c'est correct?
Marsh Posté le 23-06-2009 à 15:36:23
absot77 a écrit : C'est la première fois que je fais ça donc je peux faire des erreurs.. |
non mais là, c'est même pas une erreur, juste du bon sens... tu ne vois pas que tu colles dans un cookie une chaine de caractères correspondant à une requête SQL qui va chercher les infos d'identification de ton visiteur ?
pour éviter ça, tu peux stocker le mot de passe hashé (en MD5 ou mieux, SHA1) dans la base et dans le cookie, puis effectuer une comparaison. il ne faut absolument pas que tu stockes le mot de passe en clair dans ta base pour d'évidentes raisons de sécurité.
Marsh Posté le 23-06-2009 à 15:37:17
absot77 a écrit : Si à la place de
|
reprend tout de zéro, lis la doc de setcookie(), là tu fais n'importe quoi
Marsh Posté le 23-06-2009 à 15:45:06
Je viens de lire ça:
Code :
|
Et aussi ça:
Code :
|
Donc je préfère juste faire:
Code :
|
J'ai bien compris ou pas?
Marsh Posté le 23-06-2009 à 15:59:18
Si tu mets juste le mail alors n'importe qui pourra se connecter à ton compte s'il connait ton adresse, il suffit de créer un cookie avec juste ton mail.
Comme l'a proposé Harkonnen mets par exemple le md5 du mot de passe en valeur.
Marsh Posté le 23-06-2009 à 16:26:11
perso je te conseille de te (re)documenter un peu sur les sessions php, parce que la j'ai l'impression que tu n'es pas au point.
Marsh Posté le 24-06-2009 à 15:28:13
Harkonnen a écrit : |
Moi, je dirais plutôt :
reprend tout de zéro, lis la doc de setcookie(), là tu fais n'importe quoi
Il semble que même les bases de l'accès aux données soient à revoir.
Marsh Posté le 25-06-2009 à 17:13:35
Salut
bon je suis d'accord sur l'idée avec kao98 relis un peu les principes de bases de données ca ferra pas de mal
mais bon kao98 c'est des erreurs qui arrivent ^^
absot77 il ne faut absolument jamais, jamais mettre d'information importante en claire, que ce soit dans un cookie ou dans ta base de donnée
J'ai pas trop regardé en quel langage tu travailles, mais il existe forcément des fonctions de sécurité (sinon code les ), du genre en php :
string md5 ( string $str )
du coup dans ta base tu enregistres le md5 du mot de passe et surtout pas le mot de passe en claire
ensuite quand une personne veut se logger tu compare le md5 de la chaine qu'elle propose avec le md5 sauvegarder dans la base de donnée
Apres du coup je pense que tu peux stocker sans trop de risque le md5 dans un cookie
Marsh Posté le 26-06-2009 à 14:40:07
Ta requête est aussi une invitation gigantesque à l'injection sql.
Il suffit de saisir comme adresse mail la réponse suivante (en gras) et n'importe quoi (nawak ici) dans mdp
' or 1=1 --
et ça passe.
la requête construite et exécutée ressemble à ça :
SELECT mail, mdp FROM client WHERE mail='' or 1=1 --' AND mdp='nawak'
qui renvoie TOUTES les lignes de la table client !
Amis développeurs accédant aux bases de données, renseignez vous et protégez votre code contre l'injection sql. Please !
Marsh Posté le 23-06-2009 à 13:08:06
Slt, je voudrais faire un UPDATE de ma liste d'accessoire seulement elle ne fonctionne pas, j'ai le message d'erreur que j'ai dis de mettre en cas de problème, je vous montre mon code:
J'ai donc le message d'erreur Première requête échouée, je suis sûr que toutes ma variables ont des valeurs puisque je leur ai faites un echo et y avait les valeurs que je voulais..
D'où peut venir le problème?