Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ukrywanie prawdziwego ID
Forum PHP.pl > Forum > PHP
dizor
Chcę ukryć prawdziwe ID rekordu - wymyśliłem, żeby generować jakiś losowy ciąg znaków i wrzucać go do wiersza, a następnie posługiwać się nim podczas wybierania odpowiedniego wiersza. Co w przypadku kiedy wygeneruje mi się taki który jest już w bazie? Sprawdzać czy insert wykonał się prawidłowo, jeśli nie to generować jeszcze raz random i znowu insert?

Macie może jakiś inny pomysł?
futura
A po co chcesz ukrywać ID rekordu z bazy danych?
dizor
Np. po to żeby nie było widać ile jest użytkowników w systemie, żeby nie było widać które id ma faktura itd. itp.
futura
Pobierasz sobie ID. Potem za pomocą random() dajesz jakiś ciąg znaków i dodajesz do bazy do nowego pola dla tego ID oryginalnego. Po wygenerowaniu random() sprawdzasz czy taki klucz przypadkiem istnieje w bazie. Jeśli tak to generujesz nowy i wstawiasz. Na podstawie nowego,tymczasowegi ID operujesz sobie. Potem jak już skończysz to zawsze możesz usunąć tymczasowy ID z bazy.
Crozin
Przekombinowałeś. Po prostu użyj pola CHAR(8), które będzie kluczem głównym. Jego tworzenie może wyglądać chociażby tak:
  1. $pk = substr(uniqid(), 0, 8);
Sprawdzanie czy takie ID jest w bazie to po prostu:
  1. SELECT COUNT(*) FROM tblName WHERE id = "$pk";
Jeżeli zwróci 1 to trzeba wygenerować nowy klucz i ponownie sprawdzić czy taki już nie jest użyty.
dizor
Opisałeś mój sposób który mi się nie podoba, np. pętla która sprawdza czy taki klucz już jest w bazie - to chyba nie jest najlepsze rozwiązanie. Podobne rozwiązanie to np. pole z tym kluczem zrobić unikalne i sprawdzać czy insert się udał, jak nie to znowu wygenerować ... to prosta sprawa. Mi chodzi o to, że nie bardzo podoba mi się ten sposób i może ktoś zna coś lepszego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.