0

Мне нужно создать уникальную строку в PHP.Создать уникальную строку, используя строку в качестве «ключа» в PHP

В настоящее время я использую технику, как этот

$clipId = base_convert(microtime(), 8, 36); 

Однако, как это основано на время, изменения ID, когда страница повторно вынесена, и мне нужно всегда оставаться такими же.

Если бы был способ подачи в URL изображения и постзаписей в виде строк для вывода буквенно-цифрового идентификатора, это было бы идеально и «случайно» для того, что мне нужно сделать здесь. Также, если бы можно было получить unix-время, изображение было загружено в Wordpress (вместе со временем unix-времени, когда сообщение было создано), я мог бы использовать это.

+4

Так что на самом деле вы не хотите ** случайную ** строку. – tmt

+0

вы можете использовать переменные '$ _SESSION', если вы не хотите регенерировать этот идентификатор. – vaso123

+1

Итак, как насчет объяснения проблемы * реального *, с которой вы сталкиваетесь? Очевидно, что это не создает случайную строку, которая на самом деле не случайна, и не делает то, что делают случайные строки. Вы решаете что-то, ваше потенциальное решение - это странно-неслучайная строка. Что это такое? –

ответ

2

Итак, вам нужен алгоритм, который превращает одну строку в другую строку. Это не случайно, это либо кодировка , либо hash. Кодировка выражает одно и то же значение только в разных терминах, например base64_encode. Вы можете конвертировать между исходной строкой и закодированной формой туда и обратно так часто, как вам нравится.

В качестве альтернативы вы, вероятно, хотите получить хэш-код как SHA1 или MD5, чтобы превратить произвольный вход в выходной сигнал с фиксированной длиной. Вы можете не конвертировать хэш обратно в свое первоначальное значение.

В качестве альтернативы вы можете использовать произвольно произвольную случайную строку, сгенерированную генератором псевдослучайных чисел . Эти генераторы должны быть посеяны с начальным значением и затем возвращают предсказуемую и повторяемую серию кажущихся случайными чисел. Если вы засеваете его с тем же значением, он вернет вам ту же последовательность случайных чисел. Вы можете использовать это для создания случайных чисел, которые не имеют прямого соединения с вашей строкой, но при необходимости воспроизводятся. например mt_rand, mt_srand.

+0

Это полезно, спасибо. Я больше посмотрю на это. Итак, есть быстрый и простой способ кодировать/хешировать строку в 10-значную буквенно-цифровую строку. Здесь нет ни жизни, ни смерти, так что это действительно не biggie, если она не на 100% надежна. Это скорее доказательство концепции/прототипа прямо сейчас. –

+0

'substr (sha1 ($ string), 0, 10)' - Самая большая проблема - вероятность столкновения *, т. Е. Два входа, дающих один и тот же результат.Чем короче вы делаете вывод, тем выше вероятность столкновения. На практике это, вероятно, будет хорошо, но если вы серьезно, вам нужно запустить математику с вероятностью. – deceze

+0

Спасибо, это должно быть прекрасно для того, что мне нужно, я проверю его. На самом деле это ничего не сломает, и его не будет много использовать, это просто прототип, и он не получит такого большого использования. –

Смежные вопросы