Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Krotki hash
Forum PHP.pl > Forum > PHP
propage
Jest funkcja, która tworzy hasuje, jednak has jest duzo krotszy niz z funkcji md5 czy sh1 ?
Potrzebuje funkcji, ktora bedzie tworzyc id na podstawie unikalnej nazwy, mysle, iż 5 literowe id w calkowicie wystarczy przy bardzo malej bazie danych
skowron-line
Przecież możesz sobie obciąć do 5 znaków
  1. substr(0, 5, md5('skowron-line'));


A druga sprawa jest taka że jak będziesz miał w bazie klucz główny i auto_increment na polu id to wystarczy żeby były unikalne wartości.
propage
No włąsnie, chciałem tak zrobić, bez konieczności dawnia, "unikalnych wartości" w tabeli, tak aby ta funkcja juz mi zwracala unikalne wartości.
Blame
To może tak:
  1. substr(0, 5, md5(microtime()));
PiotrekM
Cytat(skowron-line @ 3.03.2010, 09:06:30 ) *
Przecież możesz sobie obciąć do 5 znaków
  1. substr(0, 5, md5('skowron-line'));

pierwszy argument to string, czyli:
  1. substr(md5('skowron-line'), 0, 5);


edit:
dziwne, ale z microtime te pierwsze 8 cyfr powtórzyło mi się 85 razy w pętli do 1000, ba... tylko jedna wartość mi się powtórzyła. dziwne.
w kolejnej pętli zero powtórzeń smile.gif
teoretycznie czasami może się zdarzyć powtórzenie smile.gif
skowron-line
@PiotrekM dzięku za poprawkę.
A co do powtórzonych wartości to jest tak bo md5 jest słabym algorytmem hashującym, polecam sha256 w phpie funkcja się nazywa hash i jako parametr podaje się algorytm i string.
mls
Cytat(PiotrekM @ 3.03.2010, 14:10:12 ) *
dziwne, ale z microtime te pierwsze 8 cyfr powtórzyło mi się 85 razy w pętli do 1000, ba... tylko jedna wartość mi się powtórzyła. dziwne.
w kolejnej pętli zero powtórzeń smile.gif
teoretycznie czasami może się zdarzyć powtórzenie smile.gif


Dziwne, że nie spojrzałeś co konkretnie robi funkcja microtime. Może wtedy nie dziwiłbyś się dlaczego zwracała przez jakiś czas takie same dane...
Do losowych liczb wymyślono chociażby uniqid, którego to możesz podstawić zamiast microtime...
PiotrekM
Cytat(mls @ 3.03.2010, 15:09:02 ) *
Dziwne, że nie spojrzałeś co konkretnie robi funkcja microtime. Może wtedy nie dziwiłbyś się dlaczego zwracała przez jakiś czas takie same dane...
Do losowych liczb wymyślono chociażby uniqid, którego to możesz podstawić zamiast microtime...

masz racje, ale microtime zwraca czas z dużą dokładnością, więc myślałem, że się nie powtórzy.
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.