Problème d'insert dans la bdd
Résolu/Fermé
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
-
24 août 2010 à 15:20
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 - 24 août 2010 à 18:41
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 - 24 août 2010 à 18:41
A voir également:
- Problème d'insert dans la bdd
- Touche insert - Guide
- Disk boot failure insert system disk and press enter - Guide
- Ou est la touche "INSERT" ? ✓ - Forum Clavier
- Insert system disk in drive - Forum Windows
- Reboot and select proper boot device or insert boot media in selected boot device and press a key - Forum Windows
7 réponses
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
24 août 2010 à 15:49
24 août 2010 à 15:49
Malheureux! mais que n'as tu pas fait??!!
commence par rectifier le tir: tu passes le minimum dans ta variable session, et tu ne passes que du crypté de préférence. Tes sessions ne sont pas sécurisées, un pirate peut les lire et les modifier sans trop de problème, et du coup s'incruster dans ton site sans y être invité. A éviter à tout prix donc :), commence par corriger ça :).
Ensuite, pour tes insert, un rappel des champs auxquels tu va attribuer les valeurs listées dans values() est plutôt recommandé, pour des raisons de sécurité et de solidité du script. J'ajouterais que ta concaténation normalement est inutile, tente ceci:
$s="insert into table ( 'champ1') values ( '$formulaire[champ1]') limit 1"
Ca devrait fonctionner^^, mais par contre " values ('$formulaire[champ1][champ2]')" comprendra le [champ2] comme une chaîne et non comme une partie de la variable.
Pour ton problème, remplace method=get par method=post dans ton formulaire, ça devrait si ça ne règle pas le problème, au moins faire avancer les choses^^.
D'après tes scripts, '".$formulaire['pwd']."',2);"; s'inscrit dans ta bdd d'abord parce que 2 n'est pas une variable du formulaire, ensuite parce que tu as effectué une fonction sur la variable pwd avant d'affecter le résultat de cette même fonction à cette même variable. Il y a donc de fortes chances que cette variable dans l'état actuel des choses ne contienne jamais ce qui t'intéresse.
commence par rectifier le tir: tu passes le minimum dans ta variable session, et tu ne passes que du crypté de préférence. Tes sessions ne sont pas sécurisées, un pirate peut les lire et les modifier sans trop de problème, et du coup s'incruster dans ton site sans y être invité. A éviter à tout prix donc :), commence par corriger ça :).
Ensuite, pour tes insert, un rappel des champs auxquels tu va attribuer les valeurs listées dans values() est plutôt recommandé, pour des raisons de sécurité et de solidité du script. J'ajouterais que ta concaténation normalement est inutile, tente ceci:
$s="insert into table ( 'champ1') values ( '$formulaire[champ1]') limit 1"
Ca devrait fonctionner^^, mais par contre " values ('$formulaire[champ1][champ2]')" comprendra le [champ2] comme une chaîne et non comme une partie de la variable.
Pour ton problème, remplace method=get par method=post dans ton formulaire, ça devrait si ça ne règle pas le problème, au moins faire avancer les choses^^.
D'après tes scripts, '".$formulaire['pwd']."',2);"; s'inscrit dans ta bdd d'abord parce que 2 n'est pas une variable du formulaire, ensuite parce que tu as effectué une fonction sur la variable pwd avant d'affecter le résultat de cette même fonction à cette même variable. Il y a donc de fortes chances que cette variable dans l'état actuel des choses ne contienne jamais ce qui t'intéresse.
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101
24 août 2010 à 15:22
24 août 2010 à 15:22
structure table login :
Champ Type Interclassement Attributs Null Défaut Extra Action id_login int(8) UNSIGNED Non Aucun auto_increment Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier user varchar(20) latin1_swedish_ci Non Aucun Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier mail varchar(50) latin1_swedish_ci Non Aucun Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier pwd varchar(50) latin1_swedish_ci Non Aucun Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier level tinyint(3) UNSIGNED Non 0 Affiche les valeurs distinctes Modifier Supprimer Primaire Unique Index Texte entier
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101
24 août 2010 à 16:05
24 août 2010 à 16:05
Bon j'ai fait un
sans passer par le fichier create_session.php donc du coup ça m'a tout inseré même le mot de passe mais pas crypté...
Pour ce qui est de la securité, pour moi tout ça c'est nouveau et j'ai pas trop compris... je pense que je demanderais à mon prof à la rentrée pour qu'il m'explique cette partie (comment sécuriser mes données)...
merci pour tes explications (enfin j'aurais pû le faire mais c'est vrai que je me suis bien compliquée la vie avec la création de session ^^')
$sql_insert_clients="INSERT INTO clients (Nom,Prenom,genre,adresse,ville,cp,tel) VALUES('".$_POST['Nom']."','".$_POST['Prenom']."','".$_POST['genre']."','".$_POST['adresse']."','".$_POST['ville']."','".$_POST['cp']."','".$_POST['tel']."');"; $results= mysql_query($sql_insert_clients); $sql_insert_login="INSERT INTO login (user,mail,pwd,level) VALUES('".$_POST['user']."','".$_POST['mail']."','".$_POST['pwd']."','2');"; $results_login=mysql_query($sql_insert_login); header("Location:ajoutreussi.php");
sans passer par le fichier create_session.php donc du coup ça m'a tout inseré même le mot de passe mais pas crypté...
Pour ce qui est de la securité, pour moi tout ça c'est nouveau et j'ai pas trop compris... je pense que je demanderais à mon prof à la rentrée pour qu'il m'explique cette partie (comment sécuriser mes données)...
merci pour tes explications (enfin j'aurais pû le faire mais c'est vrai que je me suis bien compliquée la vie avec la création de session ^^')
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
24 août 2010 à 17:04
24 août 2010 à 17:04
no probs^^
Théoriquement, ton programme est fragile à chaque endroit où des données transmises par l'utilisateur transitent. Ca comprend donc, les liens, les données des formulaires, les sessions, les fichiers envoyés^^ pour commencer. C'est pour ça qu'il faut limiter ces données au strict nécessaire, et filtrer à tous prix ce nécessaire. Les données que tu transmettais en $_SESSION sont particulièrement exposées, ce qui est fâcheux pour des identifiants, se contenter d'un formulaire et d'un traitement sur les données formulaires est donc l'attitude à adopter. Ton prof te parlera notamment à l'avenir (j'espère:D) de la programmation orientée objet, ce qui te permettra d'automatiser toutes ces tâches et de faire un travail d'une qualité autrement plus intéressante. Par exemple, grâce à la POO, à chaque formulaire envoyé et chaque page ouverte, mes données sont analysées et triées, et mes requêtes sql sont automatisées et obéissent à des règles de sécurité générales sans que j'ai à me prendre le chou sur chaque formulaire à traiter^^ que du bonheur pour mes scripts^^.
Pour le moment, tes modifications améliorent ton script, mais il te faudra aller plus loin^^
par exemple, utiliser une fonction de ce type:
Cette fonction assez lamba effectue la fonction addslashes sur toutes les variables qui viennent de ton formulaire, c'est une première étape pour éviter les attaques en sql, car ça ajoute un slash devant les apostrophes^^. Tu peux librement utiliser tes variables $_POST par la suite, car elles seront un peu mieux protégées^^
La sécurisation des données est un domaine vraiment très vaste^^, je ne saurais que trop t'encourager à commencer à te renseigner par toi même, car ton prof n'apportera pas nécessairement toutes les réponses dont tu auras besoin. En tout cas, j'espère que ces quelques petites explications t'aideront :o)
Théoriquement, ton programme est fragile à chaque endroit où des données transmises par l'utilisateur transitent. Ca comprend donc, les liens, les données des formulaires, les sessions, les fichiers envoyés^^ pour commencer. C'est pour ça qu'il faut limiter ces données au strict nécessaire, et filtrer à tous prix ce nécessaire. Les données que tu transmettais en $_SESSION sont particulièrement exposées, ce qui est fâcheux pour des identifiants, se contenter d'un formulaire et d'un traitement sur les données formulaires est donc l'attitude à adopter. Ton prof te parlera notamment à l'avenir (j'espère:D) de la programmation orientée objet, ce qui te permettra d'automatiser toutes ces tâches et de faire un travail d'une qualité autrement plus intéressante. Par exemple, grâce à la POO, à chaque formulaire envoyé et chaque page ouverte, mes données sont analysées et triées, et mes requêtes sql sont automatisées et obéissent à des règles de sécurité générales sans que j'ai à me prendre le chou sur chaque formulaire à traiter^^ que du bonheur pour mes scripts^^.
Pour le moment, tes modifications améliorent ton script, mais il te faudra aller plus loin^^
par exemple, utiliser une fonction de ce type:
function traitement_Post(){ foreach( $_POST as $k=> $v){ $_POST[$k]=addslashes($v); } }
Cette fonction assez lamba effectue la fonction addslashes sur toutes les variables qui viennent de ton formulaire, c'est une première étape pour éviter les attaques en sql, car ça ajoute un slash devant les apostrophes^^. Tu peux librement utiliser tes variables $_POST par la suite, car elles seront un peu mieux protégées^^
La sécurisation des données est un domaine vraiment très vaste^^, je ne saurais que trop t'encourager à commencer à te renseigner par toi même, car ton prof n'apportera pas nécessairement toutes les réponses dont tu auras besoin. En tout cas, j'espère que ces quelques petites explications t'aideront :o)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101
24 août 2010 à 17:53
24 août 2010 à 17:53
Je te remercie pour ces explications mais en fait la POO on l'a vu en cours ^^' seulement j'ai rien compris à la partie SQL donc du coup pour insérer des données en POO ben c'est coton -_-' Vu que mon projet doit être fini à une date butoire trés proche, je peux pas me pencher sur le sujet... je verrais à la rentrée peut-etre que le prof pourra me réexpliquer l'insertion des données via POO ^^
Smoking bird
Messages postés
870
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
10 juillet 2011
58
24 août 2010 à 18:37
24 août 2010 à 18:37
oki doki^^ bon courage pour ton projet alors^^:)
Riwalenn
Messages postés
364
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
16 février 2015
101
24 août 2010 à 18:41
24 août 2010 à 18:41
merci :)