php генератор случайных букв
Как получить в PHP случайное число?
Получение случайного числа
Этот метод полезен для добавления случайных чисел в файлы CSS и JavaScript :
Это всего лишь один из возможных способов. Возвращаемое число будет принадлежать диапазону между двумя указанными числами.
Получение случайной строки
Если вам нужна PHP генерация случайного числа или буквенно-цифровой строки, попробуйте эту функцию:
Этот код выдает случайную строку, состоящую из 10 символов. Можно изменить 10 на необходимое число. Альтернативная версия функции:
Применение такое же, как и для предыдущей функции.
Еще более случайная строка
Этот метод похож на предыдущий, но в нем создается еще более случайная буквенно-цифровая строка с помощью генерации случайных чисел функцией srand() :
Применение способа получения в PHP случайного числа из диапазона:
Приведенный выше код выдает случайную строку, состоящую из 10 символов. Вы можете изменить 10 на нужное число.
Случайная удобочитаемая строка
В приведенном ниже примере мы генерируем случайную строку, которая включает в себя только буквы, чтобы сделать строку понятной:
Получение случайных элементов из массива
Есть много способов сделать это. Основная задача — вернуть из массива случайный набор элементов. Я использую приведенный ниже метод для отображения четырех случайных объявлений ( из массива, который включает в себя восемь объявлений ):
Этот код выдает строку, содержащую четыре случайных элемента, разделенных пробелом. Можно задать любое число. Просто не забудьте, что оно должно быть меньше, чем общее количество элементов массива. Также можно настроить выходную строку по своему желанию.
Случайные строки пароля
Вот пример использования функций для генерации паролей на основе массива случайных чисел PHP :
Существует множество способов генерации случайных паролей. Но этот позволяет контролировать надежность и длину пароля. Вот пример использования кода для получения в PHP случайного числа из диапазона :
Получение известной случайной строки
Обратите внимание, что этот PHP генератор случайных чисел не рекомендуется для применения на рабочих сайтах. Я рассмотрел его только потому, что он соответствует теме статьи, и может помочь в разработке различных идей тем, кто работает над подобными проектами.
Пожалуйста, оставьте ваши мнения по текущей теме статьи. За комментарии, подписки, отклики, дизлайки, лайки низкий вам поклон!
PHP: как создать случайную, уникальную, буквенно-цифровую строку?
как можно было бы создать случайную, уникальную строку, используя цифры и буквы для использования в ссылке проверки? Например, когда вы создаете учетную запись на веб-сайте, и он отправляет вам электронное письмо со ссылкой, и вам нужно щелкнуть эту ссылку, чтобы подтвердить свою учетную запись. угу. один из них.
Как я могу создать один из них с помощью PHP?
24 ответов:
Примечание: это решение не должно использоваться в ситуациях, когда качество ваших случайность может повлиять на безопасность приложения. В частности, rand() и uniqid() не криптографически безопасный генератор случайных чисел!—9—>. Смотрите Скотт для безопасной альтернативы.
Если вам не нужно, чтобы он был абсолютно уникальным с течением времени:
в противном случае (учитывая, что вы уже определили уникальный логин для вашего пользователя):
я просто изучал, как решить эту же проблему, но я также хочу, чтобы моя функция создавала токен, который можно использовать для поиска пароля. Это означает, что мне нужно ограничить способность маркера угадывать. Потому что uniqid основано на времени, и согласно php.net » возвращаемое значение немного отличается от microtime ()», uniqid не соответствует критериям. В PHP рекомендует использовать openssl_random_pseudo_bytes() вместо того, чтобы генерировать криптографически безопасный жетоны.
быстрый, короткий и по существу ответ:
Ниже приведена самая сильная функция, которую я мог бы сделать, которая удовлетворяет критериям (это реализованная версия ответа Эрика).
объектно-ориентированная версия самого популярного решения
Я создал объектно-ориентированное решение, основанное на Скотт‘ы ответ:
использование
пользовательские алфавит
при необходимости вы можете использовать пользовательский алфавит. Просто передайте строку с поддерживаемыми символами конструктору или сеттеру:
вот выходные образцы
Я надеюсь, что это поможет кто-то. Ура!
эта функция генерирует случайный ключ, используя цифры и буквы:
Я опаздываю, но я здесь с некоторыми хорошими исследовательскими данными, основанными на функциях, предоставляемых Скотт. Поэтому я настроил цифровую каплю океана только для этого 5-дневного автоматизированного теста и сохранил сгенерированные уникальные строки в базе данных MySQL.
в этот период я использовал 5 различных длин (5, 10, 15, 20, 50) и +/-0.5 млн записей были вставлены для каждой длины. Во время моего теста только длина 5 сгенерированных +/-3K дубликатов из 0.5 миллионов и остальные длины не создавали никаких дубликатов. Таким образом, мы можем сказать, что если мы используем длину 15 или выше с функциями Скотта, то мы можем генерировать высоконадежные уникальные строки. Вот таблица с данными моих исследований:
Я надеюсь, что это помогает.
вы можете использовать UUID (универсальный уникальный идентификатор), его можно использовать для любых целей, от строки аутентификации пользователя до идентификатора платежной транзакции.
UUID-это 16-октетное (128-битное) число. В своей канонической форме UUID представлен 32 шестнадцатеричными цифрами, отображаемыми в пяти группах, разделенных дефисами, в виде 8-4-4-4-12 в общей сложности 36 символов (32 буквенно-цифровых символа и четыре дефиса).
некоторые примеры вывода будут выглядеть так:
надеюсь, что это поможет кому-то в будущем 🙂
где length-длина нужной строки (делится на 4, в противном случае она округляется до ближайшего числа, делящегося на 4)
например (в псевдокоде)
используйте код ниже, чтобы сгенерировать случайное число из 11 символов или изменить число в соответствии с вашим требованием.
вот окончательный уникальный генератор id для вас. сделано мной.
мне нравится использовать хэш-ключи при работе с проверочными ссылками. Я бы рекомендовал использовать microtime и хэширование, используя MD5, поскольку не должно быть причин, по которым ключи должны быть одинаковыми, поскольку он хэшируется на основе microtime.
Скотт, да ты сам пишешь и хорошее решение! Спасибо.
Я также должен генерировать уникальный маркер API для каждого моего пользователя. Ниже приведен мой подход, я использовал информацию о пользователе (Userid и имя пользователя):
пожалуйста, посмотрите и дайте мне знать, если никаких улучшений я могу сделать. Спасибо
после прочтения предыдущих примеров я придумал следующее:
я дублирую 10 раз массив[0-9, A-Z] и перемешиваю элементы, после того как я получаю случайную начальную точку для substr (), чтобы быть более «творческим» 🙂 вы можете добавить [a-z] и другие элементы в массив, дублировать более или менее, быть более творческим, чем я
вот что я использую на одном из моих проектов, он работает и генерирует УНИКАЛЬНЫЙ СЛУЧАЙНЫЙ ТОКЕН:
обратите внимание, что я умножил метку времени на три, чтобы создать путаницу для тех, кто пользователь может быть интересно, как этот токен генерируется;)
Я думаю, что это лучший способ использовать.
выше функция будет генерировать вам случайную строку длиной 11 символов.
мы можем использовать эти две строки кода для создания уникальной строки проверили около 10000000 раз итерации
для действительно случайных строк, вы можете использовать
поэтому, даже если вы попытаетесь создать строку несколько раз в одно и то же время, вы получите разные выходные данные.
Это простая функция, которая позволяет генерировать случайные строки, содержащие буквы и цифры (буквенно-цифровой). Вы также можете ограничить длину строки. Эти случайные строки могут быть использованы для различных целей, в том числе: реферальный код, промокод, код купона. Функция опирается на следующие функции PHP: base_convert, sha1, uniqid, mt_rand
Я считаю, что проблема со всеми существующими идеями заключается в том, что они наверное уникальный, но не наверняка уникальный (как указано в ответе Дариуша Вальчака на loletech). У меня есть решение, которое на самом деле является уникальным. Это требует, чтобы ваш скрипт имел какую-то память. Для меня это база данных SQL. Вы также можете просто написать в файл где-нибудь. Есть две реализации:
Первый метод: есть два поля, а не 1, которые обеспечивают уникальность. Первое поле-это идентификационный номер, который не является случайным, но является уникальным (первый идентификатор-1, второй-2. ). Если вы используете SQL, просто определите поле ID со свойством AUTO_INCREMENT. Второе поле не является уникальным, но случайным. Это может быть создано с помощью любого из других методов, которые люди уже упоминали. Идея Скотта была хороша, но md5 удобен и, вероятно, достаточно хорош для большинства целей:
Второй метод: в основном та же идея, но изначально выберите максимальное количество строк, которые когда-либо будут созданы. Это может быть просто очень большое число, как триллион. Затем сделайте то же самое, сгенерируйте идентификатор, но обнулите его так, чтобы все идентификаторы имели одинаковое количество цифр. Затем просто объедините идентификатор со случайной строкой. Это будет достаточно случайным для большинства целей, но раздел ID гарантирует, что он также уникален.
вы можете использовать этот код, Я надеюсь, что это будет полезно для вас.
Php генератор случайных букв
(PHP 4, PHP 5, PHP 7, PHP 8)
rand — Генерирует случайное число
Описание
Список параметров
Наименьшее значение, которое может быть возвращено (по умолчанию: 0)
Наибольшее значение, которое может быть возвращено (по умолчанию: getrandmax() )
Возвращаемые значения
Псевдослучайное значение в диапазоне от min (или 0) до max (или getrandmax() ).
Список изменений
Примеры
Пример #1 Пример использования rand()
Результатом выполнения данного примера будет что-то подобное:
Примечания
Смотрите также
User Contributed Notes 39 notes
quick way to generate randomish numbers and simple strings.
no messing around with functions, so you can just pop the line into the middle of your existing code.
not the most perfect for sure, but ok for plenty of situations.
?>
hope someone finds it useful for somthing.
I also enjoy making one-liners.
Examples:
rand_chars(«ABCEDFG», 10) == GABGFFGCDA
rand_chars(«ABCEDFG», 10, TRUE) == CBGFAEDFEC
Don’t forget, it’s faster to use bitwise operations when you need a random number that’s less than some power of two. For example,
Since many people (myself included) come to this page looking for a way to do a random string, I present a way that uses arrays and shuffle() instead of rand(). This also has the effect of not repeating any characters in the value set.
If you are looking for generate a random expression, like password with alphanumeric or any other character, use this function:
//Here you specify how many characters the returning string must have
echo GeraHash ( 30 );
?>
Random integers with normal distribution,
it’s not scientifically approved, but worked for me.
isn’t this just a simpler way of making a random id for somthing? I mean i know that there is a very slight chance that a duplicate could be made but its a very, very, very small chance, nearly impossible.
and if you don’t want it the md5 can be removed, I’ve just added it as a prefer it there 🙂
I have made this example to generate random number with specific length (10).
Генерация случайных буквенно-цифровых строк в PHP
Позвольте мне начать этот пост с того, что почти ни одно событие не является действительно случайным. Даже исход классического броска монеты можно было бы теоретически предсказать, если бы мы знали влияние каждого из факторов, таких как трение в воздухе, гравитация и начальная сила.
То же самое применимо к генерации случайных чисел и буквенно-цифровых строк. Лучшее, на что мы можем надеяться, — это генерировать числа и строки, которые не соответствуют шаблону и не могут быть практически предсказаны злоумышленником.
В этом уроке мы рассмотрим различные методы генерации случайных чисел и буквенно-цифровых строк в PHP. Некоторые из них будут криптографически безопасными, в то время как другие предназначены только для случайного использования, например, для присвоения псевдослучайных имен файлов или создания URL-адресов и предложения имен пользователей.
Генерация случайных чисел в PHP
Функция стала еще лучше в PHP 7.2.0, избавившись от ошибки смещения по модулю. Это означает, что для некоторых конкретных семян ваша последовательность случайных чисел теперь будет немного лучше по сравнению со старыми версиями. Тем не менее, некоторый специализированный код может действительно полагаться на это смещение Если это так, вы можете использовать более старый начальный алгоритм, вызвав mt_srand() для MT_RAND_PHP генератора случайных чисел и передав MT_RAND_PHP в качестве значения второго параметра.
В приведенной выше последовательности у нас было 1267 дважды на выходе, но это не значит, что вся последовательность начала повторяться после этого. Маловероятно, что такое же число будет повторяться так скоро в случайной последовательности, но это возможно!
Криптографически безопасные случайные целые числа
Случайные числа
Генерация случайных буквенно-цифровых строк в PHP
Позвольте мне начать этот пост, сказав, что почти ни одно событие не является случайным. Даже исход классического броска монеты теоретически можно было бы предсказать, если бы мы знали о влиянии каждого фактора, например, трения, гравитации и начальной силы.
То же самое применимо к генерации случайных чисел и буквенно-цифровых строк. Самое лучшее, на что мы можем надеяться, это генерировать числа и строки, которые не следуют шаблону и не могут быть практически предсказаны злоумышленником.
В этом уроке мы рассмотрим различные методы генерации случайных чисел и буквенно-цифровых строк в PHP. Некоторые из них будут криптографически безопасны, а другие предназначены только для случайного использования, например, назначение псевдослучайных имен файлов или создание URL-адресов и предложение имен пользователей.
Создание случайных чисел в PHP
Функция стала еще лучше в PHP 7.2.0, избавившись от ошибки модульного смещения. Это означает, что для некоторых конкретных значений ваша последовательность случайных чисел теперь будет немного лучше по сравнению со старыми версиями. Однако какой-то специализированный код может действительно полагаться на эту предвзятость. Если это так, вы можете использовать более старый алгоритм, вызвав функцию mt_srand() для задания начального числа для генератора случайных чисел и передачи MT_RAND_PHP в качестве значения второго параметра.
В приведенной выше последовательности у нас было 1267 два раза на выходе, но это не означает, что после этого вся последовательность начала повторяться. Маловероятно, чтобы такое же число повторялось так быстро в случайной последовательности, но это возможно!
Криптографически безопасные случайные целые числа
Случайные числа с плавающей точкой
Изменение начального числа генераторов случайных чисел
Важно помнить, что предоставление начального значения случайного числа за один раз до вызова rand() и mt_rand() не обязательно приведет к получению более качественных случайных чисел. Фактически, использование одного и того же начального случайного числа каждый раз даст вам одно и то же случайное число!
Изменение случайного числа полезно в ситуациях, когда вы хотите создать случайную, но воспроизводимую последовательность. Следующий фрагмент кода генерирует одну и ту же последовательность случайных чисел при повторном запуске.
Генерация случайных буквенно-цифровых строк в PHP
Существует множество способов генерации случайных буквенно-цифровых строк, и то, что вы используете, будет зависеть от ваших потребностей.
Создание перетасованных строк
Помните, что случайная строка, сгенерированная таким образом, не является криптографически безопасной. Тем не менее, строка по-прежнему будет довольно непредсказуемой для общего использования, например, для генерации случайных имен файлов или URL-адресов. Вот несколько примеров:
В обоих случаях ваш результат, скорее всего, будет разным. В первом случае мы просто перетасовали допустимую строку символов, а затем взяли первые 10 символов. Во втором случае мы добавили «video» в начале сгенерированной строки и «.mp4» в конце.
Этот способ генерации случайных буквенно-цифровых строк очень прост, но у него есть несколько проблем. Например, вы никогда не получите одинаковые символы в своей случайной строке дважды. Кроме того, длина строки случайного вывода может достигать только длины входной строки.
Создание случайных строк
Если проблемы, перечисленные выше, являются неприемлемыми, вы можете посмотреть на некоторые другие реализации. Следующий код поможет решить эти проблемы.
Создание случайных шестнадцатеричных строк
Ниже приведен пример вывода, возвращаемого этими функциями:
Как вы можете видеть, генерация случайных и уникальных шестнадцатеричных строк длиной до 40 символов очень проста в PHP.
Генерация криптографически безопасных случайных строк
Заключительные мысли
В этом уроке мы рассмотрели генерацию случайных чисел и буквенно-цифровых строк в PHP. Генерация случайных чисел может быть полезна в самых разных ситуациях, например, в играх, в которых вы должны порождать вражеских игроков или произвольно давать пользователям некоторые подсказки о письмах, чтобы они могли сформировать целое слово.
Подобно случайным числам, генерация случайных буквенно-цифровых строк также может быть весьма полезной во многих случаях. С помощью str_shuffle() вы можете выбрать, какой набор символов появится в ваших случайных строках. С помощью sha1() и md5() вы можете легко генерировать случайные шестнадцатеричные последовательности, а с помощью random_bytes() вы можете генерировать криптографически защищенные строки. Это позволит вам генерировать осмысленные, но рандомизированные имена файлов и имена пользователей, которые трудно подобрать.
Надеюсь, вам понравился этот урок. Если у вас есть какие-либо вопросы, не стесняйтесь задавать их в комментариях.