![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Panowie,
czy jest jakiś wbudowany sposób w MySQL, żeby używać UUID z AUTO_INCREMENT? Czasami przydałoby mi się coś takiego. Podam przykład. Powiedzmy, że zapragnąłem zrobić własny system captcha. Większość podobnych rozwiązań ma taką wadę, że nie działa, gdy mamy otwartych kilka kart z formularzem captcha, bo na serwerze zapisywana jest w jednym czasie tylko jedna poprawna odpowiedź na użytkownika. Otwierając kolejną kartę z captcha, te otwarte wcześniej pokazują już nieaktualny obrazek. Dlatego ja chcę w formularzu captcha przekazywać specjalny kod, który jest tworzony w bazie danych w momencie wyświetlania zadania captcha jako para: kod i rozwiązanie, na przykład 8kjprmbjxmw9tq2k (kod przekazywany do input hidden) i rozwiązanie "hakuna matata". To zmyślony przykład, ale dość regularnie napotykam na problem, że chcę generować w bazie UUID. Czasami nawet nie musi to zastępować normalnego klucza, bo służy mi jako "widoczny klucz". Nie chcę, żeby użytkownicy mogli po zwykłym kluczu odczytać który to rekord z kolei, a jakoś muszę zidentyfikować rekord na przykład w formularzu. Zazwyczaj robię to tak, że losuję string w PHP i robię to w pętli tak długo, jak dany string istnieje. Nie ukrywam jednak, że rozwiązanie bazodanowe ułatwiłoby mi życie. Można też wygenerować miliony losowych stringów i dopasowywać po ID (lub po prostu brać losowe i oznaczać zużyte), jednak średnio mi się podoba ten pomysł, bo znowu jest to jakaś dodatkowa logika. Co robicie w sytuacjach, gdy potrzebujecie każdy rekord określić losowym i unikalnym ciągiem znaków? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
@markuz Kiedyś natknąłem się na tę paczkę i faktycznie jest fajna do generowania UUID. Jednak samo generowanie UUID to w tym wszystkim najmniejszy problem.
@sabat24 Jeszcze zanim odpisałeś, myślałem właśnie o tym, że jeszcze lepiej byłoby nie zapisywać tego losowego ciągu znaków, tylko po prostu zakodować i zdekodować mój czysty ID. Zastanawia mnie jedno. Dlaczego oni nazywają to hashem, skoro to później odkodowują? Hash to raczej z definicji jest nie do odkodowania. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 20:48 |