Salut, je suis en train de coder mon site en Symfony et je me demandais comment créer un champ unique comme sur ce forum ??
Quand on clique sur un sujet y'a des chiffres puis après y'a le titre. Par exemple pour le sujet que je viens de poser:
jeuxvideo.com/forums/42-30-63200892-1-0-1-0-comment-creer-un-champ-unique-comme-sur-ce-forum.htm
Je peux réaliser ça comment pour mon site ? car si je mets seulement le titre après le "/" ça ne fonctionnera pas vu que si deux personnes mettent le même titre dans leur sujet ça retournera vers le même lien...
Merci d'avance
ils ont bien un id en bdd tes topics ?
Le 29 mai 2020 à 20:50:22 _ZawaZawaZawa_ a écrit :
ils ont bien un id en bdd tes topics ?
Oui mais on m'a toujours dit de ne pas mettre l'id car c'est dangereux
Le 29 mai 2020 à 21:51:41 Raaga a écrit :
Oui mais on m'a toujours dit de ne pas mettre l'id car c'est dangereux
C'est débile.
Un ID sert justement à identifier un élément de ta base de données.
Le gros chiffres que tu vois dans l'url (63202714) c'est l'ID du topic, tu remarqueras que tu peux changer le titre dans l'url, tu seras quand même re-dirigé vers ton topic.
Tu pourrais créer un autre champ unique, mais ça n'apporterait rien de plus.
Le 29 mai 2020 à 21:51:41 Raaga a écrit :
Le 29 mai 2020 à 20:50:22 _ZawaZawaZawa_ a écrit :
ils ont bien un id en bdd tes topics ?Oui mais on m'a toujours dit de ne pas mettre l'id car c'est dangereux
bof c'est des topics hein pas des données sensibles ça concerne pas les profils des utilisateurs par exemple
pour moi le seul souci c'est que si dans le futur tu migres ta bdd toutes les URL peuvent casser. Mais bon c'est surtout pour que tu vois l'idée, au pire tu refais un champ avec un autre "id" qui ne sera pas techiquement celui de la base mais celui exprès pour le slug, doctrine a probablement des annotations pour spécifier que ça doit être unique
Le 30 mai 2020 à 00:11:42 _ZawaZawaZawa_ a écrit :
Le 29 mai 2020 à 21:51:41 Raaga a écrit :
Le 29 mai 2020 à 20:50:22 _ZawaZawaZawa_ a écrit :
ils ont bien un id en bdd tes topics ?Oui mais on m'a toujours dit de ne pas mettre l'id car c'est dangereux
bof c'est des topics hein pas des données sensibles ça concerne pas les profils des utilisateurs par exemple
pour moi le seul souci c'est que si dans le futur tu migres ta bdd toutes les URL peuvent casser. Mais bon c'est surtout pour que tu vois l'idée, au pire tu refais un champ avec un autre "id" qui ne sera pas techiquement celui de la base mais celui exprès pour le slug, doctrine a probablement des annotations pour spécifier que ça doit être unique
Pourquoi si on migre la BDD les URL peuvent casser ?
Il faut savoir que c'est bien l'ID qui est utilisé sur JVC et cela peut effectivement représenter une faille de sécurité (Forced Browsing Attack).
Une bonne méthode c'est d'ajouter un champ dans ta BDD qui correspond à ce numéro unique, qui lui sera bien généré totalement aléatoirement à la création du topic.
Le 30 mai 2020 à 14:59:04 _kilian_ a écrit :
Il faut savoir que c'est bien l'ID qui est utilisé sur JVC et cela peut effectivement représenter une faille de sécurité (Forced Browsing Attack).Une bonne méthode c'est d'ajouter un champ dans ta BDD qui correspond à ce numéro unique, qui lui sera bien généré totalement aléatoirement à la création du topic.
Le problème c'est d'utiliser un id qui n'est pas généré aléatoirement ? Pas de devoir utilisé deux id.
Le 30 mai 2020 à 14:41:18 TheRealMarco a écrit :
Le 30 mai 2020 à 00:11:42 _ZawaZawaZawa_ a écrit :
Le 29 mai 2020 à 21:51:41 Raaga a écrit :
Le 29 mai 2020 à 20:50:22 _ZawaZawaZawa_ a écrit :
ils ont bien un id en bdd tes topics ?Oui mais on m'a toujours dit de ne pas mettre l'id car c'est dangereux
bof c'est des topics hein pas des données sensibles ça concerne pas les profils des utilisateurs par exemple
pour moi le seul souci c'est que si dans le futur tu migres ta bdd toutes les URL peuvent casser. Mais bon c'est surtout pour que tu vois l'idée, au pire tu refais un champ avec un autre "id" qui ne sera pas techiquement celui de la base mais celui exprès pour le slug, doctrine a probablement des annotations pour spécifier que ça doit être unique
Pourquoi si on migre la BDD les URL peuvent casser ?
ça dépend de comment il implémente et de comment il migrerait les données, mais si il fait pas gaffe ça peut faire changer les id
bon il aurait qu'à faire gaffe, mais mieux vaut un max de précaution, moi je ferais un champ dédié au cas où, genre "code_topic" ou jsais pas quoi comme ça si il change d'avis sur le moindre détail il n'est pas fortement couplé à un champ de bas niveau géré entièrement par le SGBD
imagine il y a eu un énorme problème et il a reset pour avoir une base "vierge" sur laquelle se sont créés 20 topics récents, et il a un backup avec 200 topics anciens mais pas les récents, maintenant il veut restaurer le backup mais y ajouter les récents sur lesquels les utilisateurs discutent. Les 20 premiers id ils sont en double : il peut soit changer ces id ce qui casse des liens vers les nouveaux, soit virer les 20 plus vieux ce qui casse les liens vers les vieux.
Alors qu'avec un champ dédié avec un code exprès, on dépend pas autant du fonctionnement interne de la bdd et de ses id. Un tel code peut se générer à partir de l'id et d'un timestamp par exemple
Ou alors RIP les 20 topics, ça arrive même à des multinationales comme twitter d'en avoir rien à foutre et "d'oublier" 15 minutes d'activité
imagine il y a eu un énorme problème et il a reset pour avoir une base "vierge" sur laquelle se sont créés 20 topics récents, et il a un backup avec 200 topics anciens mais pas les récents, maintenant il veut restaurer le backup mais y ajouter les récents sur lesquels les utilisateurs discutent. Les 20 premiers id ils sont en double : il peut soit changer ces id ce qui casse des liens vers les nouveaux, soit virer les 20 plus vieux ce qui casse les liens vers les vieux.
Alors qu'avec un champ dédié avec un code exprès, on dépend pas autant du fonctionnement interne de la bdd et de ses id. Un tel code peut se générer à partir de l'id et d'un timestamp par exemple
Le problème c'est d'utiliser un id autogénéré plutôt qu'un id basé sur un guid, non ?
guid c'est quoi déjà ? le timestamp × le nom du truc × un random ?
j'ai trouvé justement merci, c'était un UID avec la librairie ramsey/uuid qui génère des id unique qu'on peut utiliser comme lien
Le 30 mai 2020 à 22:20:55 _ZawaZawaZawa_ a écrit :
guid c'est quoi déjà ? le timestamp × le nom du truc × un random ?
Je voulais dire UUID. Peut importe l'implémentation, un id généré aléatoirement avec une probabilité suffisamment forte pour qu'il n'y ait pas deux ids égaux.