Numéro de session vraiment unique ?
-
- Lézard à collerette
- Messages : 438
- Inscription : 18 juin 2004, 09:13
Numéro de session vraiment unique ?
Bonjour,
Lors de la création d'une session un numéro de session est généré automatiquement sur le serveur.
Est-il possible de vérifier que celui-ci est bien unique ?
Auquel cas, en générer un autre ?
Merci de votre aide.
Cordialement.
Guilhem.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
Lors de la création d'une session un numéro de session est généré automatiquement sur le serveur.
Est-il possible de vérifier que celui-ci est bien unique ?
Auquel cas, en générer un autre ?
Merci de votre aide.
Cordialement.
Guilhem.
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
Cordialement.
Guilhem.
Guilhem.
Tu peux l'enregistrer dans une base de données...
Mais à priori si tu as 20 chiffres (au hasard, c'est probablement plus en vrai), ça fait 2^20 > 10^6 possibilités, donc le risque est faible. Mais je suis sûr que ton système de génération a déjà une méthode pour vérifier l'unicité des identifiants de session
Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20061201 Firemarsupilami Firefox/2.0.0.6 (Ubuntu-feisty)
Mais à priori si tu as 20 chiffres (au hasard, c'est probablement plus en vrai), ça fait 2^20 > 10^6 possibilités, donc le risque est faible. Mais je suis sûr que ton système de génération a déjà une méthode pour vérifier l'unicité des identifiants de session

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20061201 Firemarsupilami Firefox/2.0.0.6 (Ubuntu-feisty)
Si tu utilises par exemple PHP tu as une fonction uniqid (ne pas suivre l'exemple qui fait un md5 dessus, c'est parfaitement stupide puisqu'on risque de perdre l'unicité justement)
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Li tens revient, je ne fais riens. ♪
J'adore la doc de cette fonction :Benoit a écrit :Si tu utilises par exemple PHP tu as une fonction uniqid (ne pas suivre l'exemple qui fait un md5 dessus, c'est parfaitement stupide puisqu'on risque de perdre l'unicité justement)
Si l'identifiant est unique... comment peut-il devenir encore plus unique ?ce qui renforcera encore l'unicité de l'identifiant.


Et que se passe-t-il si la fonction est appelée 2 fois au cours de la même microseconde ?
Si tu utilises du Perl, tu peux utiliser le module Session qui utilise un mécanisme de base de données (qui peut être un fichier texte) pour s'assurer d'une unicité absolue (qu'on ne peut pas augmenter

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
-
- Lézard à collerette
- Messages : 438
- Inscription : 18 juin 2004, 09:13
Merci de vos réponses.
J'utilise PHP et une BDD MySQL.
Cela doit-il signifier que je dois écrire :
Sinon que me conseillez-vous ?
En fait, je pose cette question parce que j'utilise 3 serveurs (qui se répartissent la charge) et j'ai déjà eu plusieurs fois ce problème. Ce qui est problématique pour un site de ecommerce...
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
J'utilise PHP et une BDD MySQL.
Cela doit-il signifier que je dois écrire :
Code : Tout sélectionner
session_id(uniqid());
session_start();
En fait, je pose cette question parce que j'utilise 3 serveurs (qui se répartissent la charge) et j'ai déjà eu plusieurs fois ce problème. Ce qui est problématique pour un site de ecommerce...
Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
Cordialement.
Guilhem.
Guilhem.
Ce n'est pas parce que le résultat est basé sur les microsecondes qu'il renverra deux fois la même chose à partir de la même microseconde. En général les générateurs de nombres pseudo-aléatoires se basent sur une fonction périodique (sur une très longue période) ET les microsecondes. Et là tu peux encore ajouter un préfixe que tu peux changer à chaque appel si vraiment tu n'as pas confiance.calimo a écrit :Si l'identifiant est unique... comment peut-il devenir encore plus unique ?![]()
![]()
Et que se passe-t-il si la fonction est appelée 2 fois au cours de la même microseconde ?
guilhem_mdg : si tu as mysql5, comme dit dans les commentaires, tu peux même utiliser la fonction du serveur :
Code : Tout sélectionner
function uuid() {
return mysql_result(mysql_query('Select UUID()'),0);
}
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
Li tens revient, je ne fais riens. ♪
Qui est en ligne ?
Utilisateurs parcourant ce forum : Semrush [Bot] et 3 invités