Hmm dziwny kod czy 3 linijka to nie jest $string = $string substr pobierze od 0 do 40 znaki z 40 znakowego hash’a?
Tak po za tym pytasz czy nie jest możliwe aby został zwrócony ten sam string dla różnych czasów cóż czas w przybliżeniu biegnie do nieskończoności, liczba wygenerowanych hash-y jest skończona (alfabet+cyfry kombinacji) sam sobie odpowiedz.
znacie funkcję która da mi 40 znakowego stringa? będę je wrzucał do bazy wiec nie musi być 100% pewności ale zeby było jak najmniej prawdopodobne by zwracała tego stringa unikatowego
a co w przypadku gdybym jeszcze przepuścił ten czas przez md5 ?
Jeżeli nie musi być 100% pewności, że jest unikatowy, może być sposób podany przez M@ster’a z mt_rand przepuszczonym przez sha1, ten substr pomiń bo dla 0,40 nic nie robi tak naprawdę dla tego wejścia. Przepuszczanie przez sha1 i md5 czegokolwiek jest bez sensu i nie daje nawet odrobiny bezpieczeństwa więcej, obie funkcje generowane są algorytmicznie dlatego samego wejścia jest to samo wyjście.
Ja bym proponował mt_rand połączyć z microtime i dopiero z tego wyciągać sha1. Trudno znaleźć jeszcze inne źródła losowości do dorzucenia (chociaż można dorzucić do tego ilość istniejących już rekordów w bazie). Na sam koniec można wymieszać ciąg znakowy przestawiając np: 1000 razy losowe pary znaków w nim.
Teraz co do sytuacji z bazą danych. Losujesz randomowego hasha, spr. czy istnieje, jeśli nie, dodajesz, jeśli istnieje losujesz znowu - szanse że trafisz na przypadek z istniejącym są bliskie zeru a takich powtórnych losowań można zrobić spokojnie ze 100 bez widocznego spowolnienia całego procesu. Także taka metoda daje Ci blisko 100% gwarancji poprawnego działania.
dzieki za informacje ale czy moglibyście podać mi tę funkcję, sory za leniwość ale musze szybko skończyć ten projekt i nie chce tracić czasu na takie szczegóły, proszę o funkcję tak bym mógł ją wywołać z argumentem ilości znaków czyli to co podałem na początku tylko już po Waszych korektach…