Identifiant unique mysql php

altergo
Invité n'ayant pas de compte PHPfrance

11 sept. 2010, 12:03

Bonjour,

Ma table mysql est constitué de plusieurs champs, dont un id unique auto_increment, classique. Il y a possibilité pour l'utilisateur de supprimer une entrée. Je ne veux pas que l'id soit la seule clause pour suppression, la sécurité serait nulle.
Je cherche donc à générer un id unique pour chaque entrée, une sorte de clé.

id | nom | email |del_key
-------------------------------
1| toto |[email protected] | cle_unique

Ainsi, si l'utilisateur veut supprimer cette entrée, il me passera en URL la clé.

Comment générer une clé unique ? J'ai vu UUID() en mysql, mais ca fait un longue clé ! Est-ce vraiment unique ?
Je pensais aussi, je peux utiliser un md5 salté sur l'email, et une autre fonction de hash ?

Que me conseillez vous d'utiliser comme génération de clé unique ?

Merci !

ViPHP
ViPHP | 1996 Messages

11 sept. 2010, 12:11

Bah si tu veux tu peux utiliser un :
$tab_temp = array_fill (0,10,rand(0,strtotime("now")));
$num = implode ('',$tab_temp);
$unique_id = sha1($num);
Je viens de l'écrire : j'ai pas tester :
array_fill rempli un tableau de 10 valeurs aléatoires entre 0 et le nombre de seconde depuis 1970.
implode linéaire le tout
et sha1 hash la linéarisation
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

11 sept. 2010, 13:54

A mon sens, entre supprimer un enregistrement à partir d'un id=421 ou d'une clé='XD666!10KMYON2POUET' ne fait pas une grosse différence...

Je pense que tes règles de sécurité ne devraient pas se baser sur "comment identifier un enregistrement pour le supprimer", mais d'avantage sur "qui a le droit de supprimer cet enregistrement" :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 5462 Messages

11 sept. 2010, 17:54


altergo
Invité n'ayant pas de compte PHPfrance

12 sept. 2010, 16:19

Aureusms > Merci pour l'idée de hasher le time() ! C'est une bonne idée, sure d'etre unique.

Ryle > Oui, mais dans mon cas je ne voudrais pas que l'utilisateur qui voit qu'il peut supprimer a partir de l'id change simplement l'id.. là si il tente de changer la clé il y a très peu de chance qu'il tombe sur une clé valide !

stealth35 > Merci pour cette fonction que je ne connaissais pas.

@+

ViPHP
AB
ViPHP | 5818 Messages

12 sept. 2010, 22:56

Sinon pour UUID() d'après la doc mysql cette fonction est bien utilisée pour fournir un identifiant unique...

ViPHP
ViPHP | 2291 Messages

12 sept. 2010, 23:57

Je pense que Ryle à quand-même mis le doigt sur le réel souci.
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.