Juste une petite question.
J'ai un formulaire d'inscription, si deux ou plusieurs personnes
s'inscrivent en même temp, ne risque t'il pas d'y avoir une incohérence dans
le code suivant.
$link = db_connect($DSN);
db_select($DSN, $link);
$SQL="INSERT INTO user
(nom,prenom,email,password,adresse,code_postal,ville,tel_fixe,tel_portable)"
." VALUES('"
.$USER['nom']."','"
.$USER['prenom']."','"
.$USER['email']."','"
.$USER['password']."','"
.$USER['adresse']."','"
.$USER['code_postal']."','"
.$USER['ville']."','"
.$USER['tel_fixe']."','"
.$USER['tel_portable']."')";
db_query($link, $SQL);
$id = mysql_insert_id(); <= ICI est ce que je peut affirmer que l'id est
bien celui qui correspond à cet utilisateur, ou dois plutot effectuer la
requete suivante afin d'être sur que l'id renvoyé est le bon
Aprés db_query($link,$SQL);
$SQL ="SELECT id_user FROM user WHERE email='".USER['email']
$rows = db_query($link, $SQL);
$id = $rows['id_user']
Merci @+
--
______________________
Visitez mon site
http://laurent.sturm.free.fr
______________________
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
John Gallet
Bonour,
J'ai un formulaire d'inscription, si deux ou plusieurs personnes s'inscrivent en même temp, ne risque t'il pas d'y avoir une incohérence dans le code suivant.
Non, pas de risques d'accès concurentiel instantané. En revanche au premier blaireau qui clique tu refresh ou qui fait back et re-soument, ou qui décide d'appeler ta page en boucle avec un wget bien placé te crééera des doublons, triplets,milliers d'entrées identiques si tu n'a pas positionné correctement une clef unique fonctionnelle.
Cf fr.comp.applications.sgbd.
$id = mysql_insert_id(); <= ICI est ce que je peut affirmer que l'id est bien celui qui correspond à cet utilisateur, Oui.
ou dois plutot effectuer la requete suivante afin d'être sur que l'id renvoyé est le bon $SQL ="SELECT id_user FROM user WHERE email='".USER['email'] $rows = db_query($link, $SQL);
Surtout pas si tu n'as pas de transactions. Le but de mysql_insert_id() est de pallier l'absence de transactions.
a++ JG
Bonour,
J'ai un formulaire d'inscription, si deux ou plusieurs personnes
s'inscrivent en même temp, ne risque t'il pas d'y avoir une incohérence dans
le code suivant.
Non, pas de risques d'accès concurentiel instantané. En revanche au
premier blaireau qui clique tu refresh ou qui fait back et re-soument,
ou qui décide d'appeler ta page en boucle avec un wget bien placé te
crééera des doublons, triplets,milliers d'entrées identiques si tu n'a
pas positionné correctement une clef unique fonctionnelle.
Cf fr.comp.applications.sgbd.
$id = mysql_insert_id(); <= ICI est ce que je peut affirmer que l'id est
bien celui qui correspond à cet utilisateur,
Oui.
ou dois plutot effectuer la
requete suivante afin d'être sur que l'id renvoyé est le bon
$SQL ="SELECT id_user FROM user WHERE email='".USER['email']
$rows = db_query($link, $SQL);
Surtout pas si tu n'as pas de transactions. Le but de mysql_insert_id()
est de pallier l'absence de transactions.
J'ai un formulaire d'inscription, si deux ou plusieurs personnes s'inscrivent en même temp, ne risque t'il pas d'y avoir une incohérence dans le code suivant.
Non, pas de risques d'accès concurentiel instantané. En revanche au premier blaireau qui clique tu refresh ou qui fait back et re-soument, ou qui décide d'appeler ta page en boucle avec un wget bien placé te crééera des doublons, triplets,milliers d'entrées identiques si tu n'a pas positionné correctement une clef unique fonctionnelle.
Cf fr.comp.applications.sgbd.
$id = mysql_insert_id(); <= ICI est ce que je peut affirmer que l'id est bien celui qui correspond à cet utilisateur, Oui.
ou dois plutot effectuer la requete suivante afin d'être sur que l'id renvoyé est le bon $SQL ="SELECT id_user FROM user WHERE email='".USER['email'] $rows = db_query($link, $SQL);
Surtout pas si tu n'as pas de transactions. Le but de mysql_insert_id() est de pallier l'absence de transactions.
a++ JG
deep
"laurent sturm" wrote in news:cam6fg$op9$ reader1.wanadoo.fr:
mysql_insert_id();
C'est un numéro auto incrémenté j'imagine ? Lors de ton insert, il s'incrémente tout seul Donc si tu fais $id = mysql_insert_id(); tu crées un enregistrement vierge avec un numéro tout neuf. Effectivement l'idéal est de récupérer l'id en fonction du mail. Ca me parait beaucoup plus propre. @+ Deep
"laurent sturm" <laurent.sturm@free.fr> wrote in news:cam6fg$op9$1@news-
reader1.wanadoo.fr:
mysql_insert_id();
C'est un numéro auto incrémenté j'imagine ?
Lors de ton insert, il s'incrémente tout seul
Donc si tu fais $id = mysql_insert_id(); tu crées un enregistrement
vierge avec un numéro tout neuf.
Effectivement l'idéal est de récupérer l'id en fonction du mail.
Ca me parait beaucoup plus propre.
@+
Deep
"laurent sturm" wrote in news:cam6fg$op9$ reader1.wanadoo.fr:
mysql_insert_id();
C'est un numéro auto incrémenté j'imagine ? Lors de ton insert, il s'incrémente tout seul Donc si tu fais $id = mysql_insert_id(); tu crées un enregistrement vierge avec un numéro tout neuf. Effectivement l'idéal est de récupérer l'id en fonction du mail. Ca me parait beaucoup plus propre. @+ Deep
laurent sturm
"John Gallet" a écrit dans le message de news:
Bonour,
J'ai un formulaire d'inscription, si deux ou plusieurs personnes s'inscrivent en même temp, ne risque t'il pas d'y avoir une incohérence dans
le code suivant.
Non, pas de risques d'accès concurentiel instantané. En revanche au premier blaireau qui clique tu refresh ou qui fait back et re-soument, ou qui décide d'appeler ta page en boucle avec un wget bien placé te crééera des doublons, triplets,milliers d'entrées identiques si tu n'a pas positionné correctement une clef unique fonctionnelle.
Ca c'est pas possible, je vérifie d'abord que l'email de l'utilisateur n'est
pas présente dans ma base de donnée avant d'autorisé l'enregistrement.
Cf fr.comp.applications.sgbd.
$id = mysql_insert_id(); <= ICI est ce que je peut affirmer que l'id est
bien celui qui correspond à cet utilisateur, Oui.
Trés bien, je te remercie d'avoir répondue à ma question, et d'avoir dissipé
ce doute.
@+ LS
ou dois plutot effectuer la requete suivante afin d'être sur que l'id renvoyé est le bon $SQL ="SELECT id_user FROM user WHERE email='".USER['email'] $rows = db_query($link, $SQL);
Surtout pas si tu n'as pas de transactions. Le but de mysql_insert_id() est de pallier l'absence de transactions.
a++ JG
"John Gallet" <john.gallet@wanadoo.fr> a écrit dans le message de
news:40CEBD4B.1C7D8C2D@wanadoo.fr...
Bonour,
J'ai un formulaire d'inscription, si deux ou plusieurs personnes
s'inscrivent en même temp, ne risque t'il pas d'y avoir une incohérence
dans
le code suivant.
Non, pas de risques d'accès concurentiel instantané. En revanche au
premier blaireau qui clique tu refresh ou qui fait back et re-soument,
ou qui décide d'appeler ta page en boucle avec un wget bien placé te
crééera des doublons, triplets,milliers d'entrées identiques si tu n'a
pas positionné correctement une clef unique fonctionnelle.
Ca c'est pas possible, je vérifie d'abord que l'email de l'utilisateur n'est
pas présente dans ma base de donnée avant d'autorisé l'enregistrement.
Cf fr.comp.applications.sgbd.
$id = mysql_insert_id(); <= ICI est ce que je peut affirmer que l'id
est
bien celui qui correspond à cet utilisateur,
Oui.
Trés bien, je te remercie d'avoir répondue à ma question, et d'avoir dissipé
ce doute.
@+ LS
ou dois plutot effectuer la
requete suivante afin d'être sur que l'id renvoyé est le bon
$SQL ="SELECT id_user FROM user WHERE email='".USER['email']
$rows = db_query($link, $SQL);
Surtout pas si tu n'as pas de transactions. Le but de mysql_insert_id()
est de pallier l'absence de transactions.
J'ai un formulaire d'inscription, si deux ou plusieurs personnes s'inscrivent en même temp, ne risque t'il pas d'y avoir une incohérence dans
le code suivant.
Non, pas de risques d'accès concurentiel instantané. En revanche au premier blaireau qui clique tu refresh ou qui fait back et re-soument, ou qui décide d'appeler ta page en boucle avec un wget bien placé te crééera des doublons, triplets,milliers d'entrées identiques si tu n'a pas positionné correctement une clef unique fonctionnelle.
Ca c'est pas possible, je vérifie d'abord que l'email de l'utilisateur n'est
pas présente dans ma base de donnée avant d'autorisé l'enregistrement.
Cf fr.comp.applications.sgbd.
$id = mysql_insert_id(); <= ICI est ce que je peut affirmer que l'id est
bien celui qui correspond à cet utilisateur, Oui.
Trés bien, je te remercie d'avoir répondue à ma question, et d'avoir dissipé
ce doute.
@+ LS
ou dois plutot effectuer la requete suivante afin d'être sur que l'id renvoyé est le bon $SQL ="SELECT id_user FROM user WHERE email='".USER['email'] $rows = db_query($link, $SQL);
Surtout pas si tu n'as pas de transactions. Le but de mysql_insert_id() est de pallier l'absence de transactions.
a++ JG
John Gallet
Re,
En revanche au premier blaireau qui clique tu refresh ou qui fait back et re-soument, ou qui décide d'appeler ta page en boucle avec un wget bien placé te crééera des doublons, triplets,milliers d'entrées identiques si tu n'a pas positionné correctement une clef unique fonctionnelle.
Ca c'est pas possible, je vérifie d'abord que l'email de l'utilisateur n'est
pas présente dans ma base de donnée avant d'autorisé l'enregistrement.
Ce qui est inutile et n'empêchera pas un doublon (un triplet probablement, mais pas un doublon, il suffit que l'internaute clique deux fois sur le submit parce que "ça va pas assez vite" et la probabilité est loin d'être négligeable, surtout que quand "ça va pas assez vite" c'est souvent que la base est surchargée, DONC que le temps entre le SELECT de "vérification" et l'INSERT est non négligeable).
Il suffit de mettre la colonne email en UNIQUE et de trapper l'erreur 1062 (duplicate key) en cas d'insert ou update. Là, aucuns doublons possibles.
a++; JG
Re,
En revanche au
premier blaireau qui clique tu refresh ou qui fait back et re-soument,
ou qui décide d'appeler ta page en boucle avec un wget bien placé te
crééera des doublons, triplets,milliers d'entrées identiques si tu n'a
pas positionné correctement une clef unique fonctionnelle.
Ca c'est pas possible, je vérifie d'abord que l'email de l'utilisateur n'est
pas présente dans ma base de donnée avant d'autorisé l'enregistrement.
Ce qui est inutile et n'empêchera pas un doublon (un triplet
probablement, mais pas un doublon, il suffit que l'internaute clique
deux fois sur le submit parce que "ça va pas assez vite" et la
probabilité est loin d'être négligeable, surtout que quand "ça va pas
assez vite" c'est souvent que la base est surchargée, DONC que le temps
entre le SELECT de "vérification" et l'INSERT est non négligeable).
Il suffit de mettre la colonne email en UNIQUE et de trapper l'erreur
1062 (duplicate key) en cas d'insert ou update. Là, aucuns doublons
possibles.
En revanche au premier blaireau qui clique tu refresh ou qui fait back et re-soument, ou qui décide d'appeler ta page en boucle avec un wget bien placé te crééera des doublons, triplets,milliers d'entrées identiques si tu n'a pas positionné correctement une clef unique fonctionnelle.
Ca c'est pas possible, je vérifie d'abord que l'email de l'utilisateur n'est
pas présente dans ma base de donnée avant d'autorisé l'enregistrement.
Ce qui est inutile et n'empêchera pas un doublon (un triplet probablement, mais pas un doublon, il suffit que l'internaute clique deux fois sur le submit parce que "ça va pas assez vite" et la probabilité est loin d'être négligeable, surtout que quand "ça va pas assez vite" c'est souvent que la base est surchargée, DONC que le temps entre le SELECT de "vérification" et l'INSERT est non négligeable).
Il suffit de mettre la colonne email en UNIQUE et de trapper l'erreur 1062 (duplicate key) en cas d'insert ou update. Là, aucuns doublons possibles.