я же привел функцию. почти аналог uniqid() только генерит строку длиной 8 символов. как раз как нужно. Добавлено спустя 39 минут 19 секунд: но есть косяк) через 640 лет она начнет возвращать 9 символьные хеши
спасибо убрал, работает, но до определённого времени меняется только последние 3-4 символы, нельзя сделать так чтоб целиком менялся?
Присоединяюсь - автоинкремент самый экономичный вариант. Просто его необходимо доработать под Вашу задачу. А именно кодировать цифры автоинкремента случайным символом из набора заранее выбранного алфавита. Например: 0 - кодировать набором 0, a, b 1 - 1,c,d 2 - 2, e, f ... и т.д. Алгоритм следующий: 1. выбираете последнюю запись из БД 2. декодируете ее в число 3. прибавляете 1 4. кодируете случайными символами
PHP: echo random_bites(4); Просто и генерировать можно значения произвольной длины. P.S. Подходит под PHP7, под версии периода палеолита, есть альтернативные функции.
не всегда и не везде его можно юзать без опаски, что что-то текстовое по пизде пойдёт. а в вебе текстовое всё сплошь и рядом. вообще есть крутая штука хашидс http://hashids.org/ =)
@igordata, моя версия по-короче будет PHP: function get_rand_char($num) { $x = 'xUB3dK6LPet8sRYCcEpNA5klGbou9j1DSaMZW4Fvgw7iznVhTHQIfrJXqmy2'; return mb_substr($x, ($num % 10) * 6 + rand(0, 5), 1); } function encode_num($num) { $num = $num % 100000000; $s = str_pad($num, 8, "0", STR_PAD_LEFT); $result = ''; for($i = 0; $i < 8; $i++) { $result .= get_rand_char(mb_substr($s, $i, 1)); } return $result; } только без decode и всяких плюшек.