bonjour,
jai un Id dans ma table mySql sur longueur 11, je voulais confirmer si en utilisant ce code :
est ceque $id2 sera unique en utilisant $id de latable qui est autoincrement ?Code:$id2 = hash('crc32', $id, false);
merci.
Version imprimable
bonjour,
jai un Id dans ma table mySql sur longueur 11, je voulais confirmer si en utilisant ce code :
est ceque $id2 sera unique en utilisant $id de latable qui est autoincrement ?Code:$id2 = hash('crc32', $id, false);
merci.
Un algorithme produisant un hash de taille fixe ne peut produire des hash uniques ; il y a forcement des éléments qui donneront des hash identiques puisque le nombre de hash possibles est limité.
Les chances d'obtenir une collision est cependant très faible.
Mais ton id autoincrementé est déjà un élément unique, pourquoi vouloir en refaire un autre ?
Tu peux aussi regarder du côté des UUID, et notamment de la librairie Ramsey UUID
merci pour votre aide les deux,
au fait pourquoi vouloir en refaire un autre, c'est juste pour l'utiliser dans des liens URL: (comme dans youtube watch?v=xxxxxxx), cet id sera visible dans le code source html, mais l'id autoincremente ne sera que dans la baseet la session.
Pourquoi tu ne veux pas utiliser le vrai id pour tout ?
+1 pour l'UUID.
Un crc est un hash, ce n'est pas un identifiant. On peut s'en servir comme identifiant unique, mais il est préférable d'utiliser un système spécialisé.
Ceci dit, dans 99% des cas, le simple id suffit (à condition que tu gères correctement l'authentification pour edit et delete).
Les seuls avantages que je vois sont
- avoir des url courtes
- empêcher un parcours itératif des urls
Il existe de la littérature à ce propos : https://www.clever-cloud.com/blog/en...terrible-idea/ (entre autres). Principalement pour ne pas laisser la possibilité à l'utilisateur de connaitre le premier, dernier, suivant, précédent, ... et nombre d'entrées approximatives dans la collection. Par exemple, si je revendique 300000 utilisateurs mais que passé l'id 50 on en trouve plus, ça la fou mal...
Oui c'est un traitement cosmétique pour éviter que l'on puisses établir des relations temporelles entre les différentes vidéos ainsi que la quantité disponible mais pas pour des raisons de sécurité donc si c'est ce point qui t'importait tu peux t'en passer.
merci pour vos réponses
je vais pour le moment m'en passer
encore merci.