Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Ukrywanie prawdziwego ID
dizor
post 20.02.2010, 12:41:27
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.09.2009

Ostrzeżenie: (0%)
-----


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ł?
Go to the top of the page
+Quote Post
futura
post 20.02.2010, 12:48:44
Post #2





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 4.01.2010

Ostrzeżenie: (0%)
-----


A po co chcesz ukrywać ID rekordu z bazy danych?
Go to the top of the page
+Quote Post
dizor
post 20.02.2010, 12:53:29
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.09.2009

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
futura
post 20.02.2010, 13:10:07
Post #4





Grupa: Zarejestrowani
Postów: 39
Pomógł: 4
Dołączył: 4.01.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Crozin
post 20.02.2010, 13:56:09
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
dizor
post 20.02.2010, 14:54:44
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.09.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował dizor 20.02.2010, 14:55:25
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 21:14