Бывают такие моменты, когда вам надо сгенерировать уникальную строку. Множество раз я видел, что для решения этой задачи используют функцию md5():
// генерируем случайную строку
echo md5(time() . mt_rand(1,1000000));
Но на самом деле для этих целей в PHP есть специальная функция uniqid()
// генерируем случайную строку
echo uniqid();
/* выведет
4bd67c947233e
*/
// ещё разок
echo uniqid();
/* выведет
4bd67c9472340
*/
Невооружённым взглядом можно заметить, что первые символы мягко говоря схожи… Так происходит из-за того, что данный метод использует время сервера для генерации символов. Это даже полезно, т.к. все сгенерированные значения получаются в алфавитном порядке, что даёт возможность быстро их сортировать.
Для того чтобы уменьшить шансы получения дубликата, мы можем добавить префикс или использовать второй параметр (увеличит количество символов):
// с префиксом
echo uniqid('foo_');
/* выведет
foo_4bd67d6cd8b8f
*/
// со вторым параметром
echo uniqid('',true);
/* выведет
4bd67d6cd8b926.12135106
*/
// оба
echo uniqid('bar_',true);
/* выведет
bar_4bd67da367b650.43684647
*/
Этот метод генерирует строки размером меньше, чем md5, тем самым вы сможете сэкономить место.