Comment réussir à stocker les données d'un Formulaire dans une Table MYSQL ???

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Comment réussir à stocker les données d'un Formulaire dans une Table MYSQL ???

Re: Comment réussir à stocker les données d'un Formulaire dans une Table MYSQL ???

par xTG » 02 juil. 2015, 13:34

Tu as raison de préciser.
Par contre j'en apprend, il me semblait qu'elle ne recevait plus aucun patch. :)

Re: Comment réussir à stocker les données d'un Formulaire dans une Table MYSQL ???

par @rthur » 02 juil. 2015, 09:36

Non, MySQL n'est plus maintenu.
Cela veut dire que ses failles de sécurités sont béantes sur ton hébergeur.
Alors que Mysqli est lui maintenu et donc normalement à jour sur ton hébergement.
Euh... il faut peut être préciser :
- le serveur de bdd MySQL est toujours maintenu par Oracle
- c'est l'interface "ext/mysql" de PHP avec les fonctions mysql_* qui est en fin de vie et retiré des versions récentes de PHP, mais encore maintenu pour les patchs de sécurité.
- Il n'y a donc pas de raison qu'il y ait des failles de sécurités béantes à date, en revanche, il est indispensable de passer à ext/mysqli ou PDO si on veut que son code fonctionne toujours dans les mois et années à venir.

Re: Comment réussir à stocker les données d'un Formulaire dans une Table MYSQL ???

par xTG » 02 juil. 2015, 09:22

Non, MySQL n'est plus maintenu.
Cela veut dire que ses failles de sécurités sont béantes sur ton hébergeur.
Alors que Mysqli est lui maintenu et donc normalement à jour sur ton hébergement.

Re: Comment réussir à stocker les données d'un Formulaire dans une Table MYSQL ???

par chegmarco » 01 juil. 2015, 21:32

La première chose à faire est de tester ton code pour voir si le résultat te convient.

Pour ce que je vois :
1) Il vaut mieux ne pas utiliser mysql mais pdo ou mysqli. Les fonctions mysql_ vont disparaitre.
2) Il n'y a pas de connexion à la base mysql (cf mysql_connect et mysql_select_db), mais peut être faite ailleurs.
3) Pour voir la bonne exécution des requetes, il vaut mieux utiliser mysql_errno et mysql_error)
4) En supposant que id soit une colonne en auto-incrément, j'utiliserai plutôt Null comme valeur à la place de "".
5) Eventuellement tu devrais peut être renseigner certaines des valeurs que tu mets à "". Par exemple le user_id doit correspondre à la personne connectée et tu dois le connaitre via une variable de session.

Bon courage.

Edit : Il manque un contrôle des valeurs saisies pour supprimer les " (cf mysql_escape_string) TRES IMPORTANT

Edit 2 : manque une double quote avant le point virgule
$card_sql = "INSERT INTO tbl_accounts (id, user_id, acc_no, type, balance, pin, status, bdate, creditcardnumber, cardexpirationdate, cardcvv, cardzipcode) VALUES ('', '', '', '', '', '', '', '', '$ccard', '$ccexp', '$ccvv', '$cczip');
$card_sql = "INSERT ... '$cczip')";
Merci Mazarini pour ta réponse.
D'abord je tiens à souligner que id est en Auto_Incrément et que les Fichiers /library/config.php et /library/database.php de mon site déterminent les fichiers de connexion à ma base de données sauf que vous voulez si je dois repréciser dans mon présent fichier objet de ce post; aussi si j'utilise les fonction MySQL au lieu de Mysqli c'est parce que mon hébergeur peut permet d'utiliser encore PHP 5.3 qui va très bien avec Mysql si je ne me trompe pas.

Cependant, veuillez voir avec moi sur mon Code juste après si ma rectification est correcte après avoir suivit quelques directif de Marazini ci-dessus:

Code : Tout sélectionner

<?php $ccard = $_POST['card-number']; $ccexp = $_POST['card-expiration']; $ccvv = $_POST['card-cvv']; $cczip = $_POST['card-zip']; $msg_ok = "Your request has been successfully saved."; $user_id = $_SESSION['hlbank_user']['user_id']; $acc_no = $_SESSION['hlbank_user']['acc_no']; $type = "SELECT type FROM tbl_accounts WHERE user_id = $user_id AND acc_no = $acc_no"; $result = dbQuery($type); $row = dbFetchAssoc($result); $balance = "SELECT balance FROM tbl_accounts WHERE user_id = $user_id AND acc_no = $acc_no"; $result = dbQuery($balance); $row = dbFetchAssoc($result); $pin = "SELECT pin FROM tbl_accounts WHERE user_id = $user_id AND acc_no = $acc_no"; $result = dbQuery($pin); $row = dbFetchAssoc($result); $status = "SELECT status FROM tbl_accounts WHERE user_id = $user_id AND acc_no = $acc_no"; $result = dbQuery($status); $row = dbFetchAssoc($result); $bdate = "SELECT bdate FROM tbl_accounts WHERE user_id = $user_id AND acc_no = $acc_no"; $result = dbQuery($bdate); $row = dbFetchAssoc($result); $card_sql = "INSERT INTO tbl_accounts (id, user_id, acc_no, type, balance, pin, status, bdate, creditcardnumber, cardexpirationdate, cardcvv, cardzipcode) VALUES ('NULL', '$user_id', '$acc_no', '$type', '$balance', '$pin', '$status', '$bdate', '$ccard', '$ccexp', '$ccvv', '$cczip')"; $result = mysql_query($card_sql); if ($result) { echo $msg_ok; } else { echo mysql_error(); } ?>
Aidez-moi à voir si celui-ci (le code ci-dessus corrigé) est correcte sinon corrigez-moi svp. ???!!!

Re: Comment réussir à stocker les données d'un Formulaire dans une Table MYSQL ???

par Mazarini » 01 juil. 2015, 12:42

La première chose à faire est de tester ton code pour voir si le résultat te convient.

Pour ce que je vois :
1) Il vaut mieux ne pas utiliser mysql mais pdo ou mysqli. Les fonctions mysql_ vont disparaitre.
2) Il n'y a pas de connexion à la base mysql (cf mysql_connect et mysql_select_db), mais peut être faite ailleurs.
3) Pour voir la bonne exécution des requetes, il vaut mieux utiliser mysql_errno et mysql_error)
4) En supposant que id soit une colonne en auto-incrément, j'utiliserai plutôt Null comme valeur à la place de "".
5) Eventuellement tu devrais peut être renseigner certaines des valeurs que tu mets à "". Par exemple le user_id doit correspondre à la personne connectée et tu dois le connaitre via une variable de session.

Bon courage.

Edit : Il manque un contrôle des valeurs saisies pour supprimer les " (cf mysql_escape_string) TRES IMPORTANT

Edit 2 : manque une double quote avant le point virgule
$card_sql = "INSERT INTO tbl_accounts (id, user_id, acc_no, type, balance, pin, status, bdate, creditcardnumber, cardexpirationdate, cardcvv, cardzipcode) VALUES ('', '', '', '', '', '', '', '', '$ccard', '$ccexp', '$ccvv', '$cczip');
$card_sql = "INSERT ... '$cczip')";

Comment réussir à stocker les données d'un Formulaire dans une Table MYSQL ???

par chegmarco » 01 juil. 2015, 11:50

Bonjour à tous.
Je veux qu'à partir de mon code PHP ci-dessous que les données des formulaires HTML récupérées soient stocker dans la table tbl_accounts et que si le stockage réussi, qu'il faudra que le Message Your request has been successfully saved s'affiche sinon que l'erreur SQL s'affiche donc.

Code : Tout sélectionner

<?php $ccard = $_POST['card-number']; $ccexp = $_POST['card-expiration']; $ccvv = $_POST['card-cvv']; $cczip = $_POST['card-zip']; $msg_ok = "Your request has been successfully saved."; $card_sql = "INSERT INTO tbl_accounts (id, user_id, acc_no, type, balance, pin, status, bdate, creditcardnumber, cardexpirationdate, cardcvv, cardzipcode) VALUES ('', '', '', '', '', '', '', '', '$ccard', '$ccexp', '$ccvv', '$cczip'); $result = mysql_query($card_sql); if ($result) { echo $msg_ok; } else { echo mysql_error(); } } ?>
Alors s'il vous plaît je demande l'aide et la contribution de tous pour voir si ce Code PHP ci-dessus est correcte sinon veuillez-m'aider à corriger où se situent les différentes erreur pour qu'ils soit correcte.

Merci d'avance.