php сгенерировать случайную строку

Как получить в PHP случайное число?

Получение случайного числа

Этот метод полезен для добавления случайных чисел в файлы CSS и JavaScript :

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

Получение случайной строки

Если вам нужна PHP генерация случайного числа или буквенно-цифровой строки, попробуйте эту функцию:

Этот код выдает случайную строку, состоящую из 10 символов. Можно изменить 10 на необходимое число. Альтернативная версия функции:

Применение такое же, как и для предыдущей функции.

Еще более случайная строка

Этот метод похож на предыдущий, но в нем создается еще более случайная буквенно-цифровая строка с помощью генерации случайных чисел функцией srand() :

Применение способа получения в PHP случайного числа из диапазона:

Приведенный выше код выдает случайную строку, состоящую из 10 символов. Вы можете изменить 10 на нужное число.

Случайная удобочитаемая строка

В приведенном ниже примере мы генерируем случайную строку, которая включает в себя только буквы, чтобы сделать строку понятной:

Получение случайных элементов из массива

Есть много способов сделать это. Основная задача — вернуть из массива случайный набор элементов. Я использую приведенный ниже метод для отображения четырех случайных объявлений ( из массива, который включает в себя восемь объявлений ):

Этот код выдает строку, содержащую четыре случайных элемента, разделенных пробелом. Можно задать любое число. Просто не забудьте, что оно должно быть меньше, чем общее количество элементов массива. Также можно настроить выходную строку по своему желанию.

Случайные строки пароля

Вот пример использования функций для генерации паролей на основе массива случайных чисел PHP :

Существует множество способов генерации случайных паролей. Но этот позволяет контролировать надежность и длину пароля. Вот пример использования кода для получения в PHP случайного числа из диапазона :

Получение известной случайной строки

Обратите внимание, что этот PHP генератор случайных чисел не рекомендуется для применения на рабочих сайтах. Я рассмотрел его только потому, что он соответствует теме статьи, и может помочь в разработке различных идей тем, кто работает над подобными проектами.

Пожалуйста, оставьте ваши мнения по текущей теме статьи. За комментарии, подписки, отклики, дизлайки, лайки низкий вам поклон!

Источник

Генератор случайных строк в PHP

Я пытаюсь создать рандомизированную строку в PHP и не получаю абсолютно никакого вывода с этим:

Что я делаю неправильно?

Ответ 1

Чтобы ответить на этот вопрос конкретно, необходимо решить две проблемы:

$randstring не входит в область видимости, когда вы вызываете ее, используя echo.

В цикле символы не объединяются.

Вот фрагмент кода с исправлениями:

function generateRandomString($length = 10) <

Вывод случайной строки со следующим кодом:

// Echo случайной строки.

// По желанию вы можете задать необходимую длину строки.

Ответ 2

На этот вопрос есть много ответов, но ни один из них не использует криптографически безопасный генератор псевдослучайных чисел (CSPRNG).

Простой, безопасный и правильный ответ — использовать RandomLib и не изобретать велосипед.

Для тех из вас, кто настаивает на изобретении собственного решения, для этой цели предусмотрена в PHP 7.0.0 функция random_int() ; если вы все еще используете PHP 5.x, мы написали полифилл PHP 5, random_int(), чтобы вы могли использовать новый API еще до обновления до PHP 7.

Безопасное создание случайных целых чисел в PHP — нетривиальная задача. Вы всегда должны проконсультироваться со своими постоянными специалистами по криптографии StackExchange, прежде чем развертывать собственный алгоритм в производстве.

При наличии безопасного генератора целых чисел генерация случайной строки с помощью CSPRNG — это простое дело.

Создание безопасной случайной строки:

* Генерирует случайную строку, используя криптографически безопасный

* генератор псевдослучайных чисел (random_int)

* Эта функция сейчас использует подсказки типов (только для PHP 7+), но изначально она была написана для PHP 5.

* Для PHP 7, random_int является функцией ядра PHP.

* Для PHP 5.x, зависит от https://github.com/paragonie/random_compat

throw new \RangeException(«Длина должна быть больше 0!»);

$b = random_str(8, ‘abcdefghijklmnopqrstuvwxyz’);

Ответ 3

Это создает шестнадцатеричную строку длиной 20 символов:

$string = bin2hex(openssl_random_pseudo_bytes(10)); // 20 символов

В PHP 7 ( random_bytes() ):

14 characters, включая /=+

$string = substr(str_replace([‘+’, ‘/’, ‘=’], », base64_encode(random_bytes(32))), 0, 32); // 32 символа, без /=+

$string = bin2hex(random_bytes(10)); // 20 символов, только 0-9a-f

Ответ 4

Лучший способ реализовать эту функцию:

$keys = array_merge(range(0,9), range(‘a’, ‘z’));

Мы будем очень благодарны

если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.

Источник

Как создать случайную строку с помощью PHP?

Я знаю, что функция rand в PHP генерирует случайные целые числа, но как лучше всего создать случайную строку, например:

Исходная строка, 9 символов

Пример произвольной строки с ограничением до 6 символов

ОБНОВЛЕНИЕ: я нашел тонны этих типов функций, в основном я пытаюсь понять логику каждого шага.

ОБНОВЛЕНИЕ: функция должна генерировать любое количество символов по мере необходимости.

Пожалуйста, прокомментируйте детали, если ответите.

17 ответов

Ну, вы не уточнили все вопросы, которые я задал в своем комментарии, но я предполагаю, что вам нужна функция, которая может принимать строку «возможных» символов и длину строки для возврата. Прокомментировано в соответствии с просьбой, с использованием большего количества переменных, чем обычно, для ясности:

Чтобы вызвать эту функцию с данными вашего примера, вы должны назвать ее примерно так:

Если вы хотите разрешить повторяющиеся вхождения символов, вы можете использовать эту функцию:

Обновил код в соответствии с замечательным предложением mzhang в комментариях ниже.

Лучшая и обновленная версия отличного ответа @ taskamiski:

Лучшая версия, используя mt_rand() вместо rand()

Если вы хотите сократить результат, скажем, до 50 символов, сделайте это следующим образом:

Объединение символов в конце должно быть более эффективным, чем повторное объединение строк.

Редактировать # 1: добавлена ​​опция, позволяющая избежать повторения символов.

Источник

PHP генератор случайных строк

Я пытаюсь создать рандомизированную строку в PHP, и я не получаю абсолютно никакого вывода с этим:

Что я делаю не так?

30 ответов

Чтобы ответить на этот вопрос конкретно, две проблемы:

Вот фрагмент кода с исправлениями:

Выведите случайную строку с вызовом ниже:

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

Еще один способ.

ОБНОВЛЕНО (теперь создается строка любой длины):

На этот вопрос существует множество ответов, но ни один из них не использует криптографически Безопасный генератор псевдослучайных чисел (CSPRNG).

Для тех из вас, кто настаивает на изобретении собственного решения, PHP 7.0.0 предоставит random_int() для этого; если вы все еще используете PHP 5.x, мы написали полифилл PHP 5 для random_int() так что вы можете использовать новый API даже до обновления до PHP 7.

Создание безопасной случайной строки

Использование :

Демо : https://3v4l.org/IMJGF (игнорируйте ошибки PHP 5; ему нужен random_compat)

Это создает шестнадцатеричную строку длиной 20 символов:

@tasmaniski: ваш ответ сработал для меня. У меня была такая же проблема, и я бы посоветовал ее тем, кто когда-либо ищет тот же ответ. Вот оно от @tasmaniski:

В зависимости от вашего приложения (я хотел сгенерировать пароли) вы могли использовать

Лучший способ реализовать эту функцию:

PHP 7+ Генерация криптографически безопасных случайных байтов с помощью random_bytes функция.

PHP 5.3+ Создание псевдослучайных байтов с помощью openssl_random_pseudo_bytes.

Лучшим вариантом использования может быть

$randstring в области действия функции не совпадает с областью, в которой вы ее вызываете. Вы должны присвоить возвращаемое значение переменной.

Или просто повторите возвращаемое значение:

Сначала вы определяете алфавит, который хотите использовать:

Затем используйте openssl_random_pseudo_bytes() для создания правильных случайных данных:

В качестве альтернативы и обычно лучше использовать RandomLib и SecurityLib:

Я протестировал там производительность большинства популярных функций, время, необходимое для генерации 1’000’000 строк из 32 символов на моем ящике, составляет:

Обратите внимание, что не важно, как долго это было на самом деле, но что медленнее, а какое быстрее, поэтому вы можете выбрать в соответствии с вашими требованиями, включая готовность к криптографии и т. Д.

Substr () вокруг MD5 был добавлен для точности, если вам нужна строка короче 32 символов.

Ради ответа: строка не была объединена, а перезаписана, и результат функции не был сохранен.

Источник

Php сгенерировать случайную строку

Reg.ru: домены и хостинг

Крупнейший регистратор и хостинг-провайдер в России.

Более 2 миллионов доменных имен на обслуживании.

Продвижение, почта для домена, решения для бизнеса.

Более 700 тыс. клиентов по всему миру уже сделали свой выбор.

Бесплатный Курс «Практика HTML5 и CSS3»

Освойте бесплатно пошаговый видеокурс

по основам адаптивной верстки

на HTML5 и CSS3 с полного нуля.

Фреймворк Bootstrap: быстрая адаптивная вёрстка

Пошаговый видеокурс по основам адаптивной верстки в фреймворке Bootstrap.

Научитесь верстать просто, быстро и качественно, используя мощный и практичный инструмент.

Верстайте на заказ и получайте деньги.

Что нужно знать для создания PHP-сайтов?

Ответ здесь. Только самое важное и полезное для начинающего веб-разработчика.

Узнайте, как создавать качественные сайты на PHP всего за 2 часа и 27 минут!

Создайте свой сайт за 3 часа и 30 минут.

После просмотра данного видеокурса у Вас на компьютере будет готовый к использованию сайт, который Вы сделали сами.

Вам останется лишь наполнить его нужной информацией и изменить дизайн (по желанию).

Изучите основы HTML и CSS менее чем за 4 часа.

После просмотра данного видеокурса Вы перестанете с ужасом смотреть на HTML-код и будете понимать, как он работает.

Вы сможете создать свои первые HTML-страницы и придать им нужный вид с помощью CSS.

Бесплатный курс «Сайт на WordPress»

Хотите освоить CMS WordPress?

Получите уроки по дизайну и верстке сайта на WordPress.

Научитесь работать с темами и нарезать макет.

Бесплатный видеокурс по рисованию дизайна сайта, его верстке и установке на CMS WordPress!

Хотите изучить JavaScript, но не знаете, как подступиться?

После прохождения видеокурса Вы освоите базовые моменты работы с JavaScript.

Развеются мифы о сложности работы с этим языком, и Вы будете готовы изучать JavaScript на более серьезном уровне.

*Наведите курсор мыши для приостановки прокрутки.

Генерация случайных строк в PHP

В этой небольшой заметке я покажу, как можно сгенерировать случайную строку средствами PHP.

Подобная задача может возникнуть в самых разных ситуациях, например:

— создание случайного пароля из предустановленного набора символов;

— генерация случайного имени для файла или папки (в целях их скрытия и защиты);

— создание временного уникального идентификатора для какого-либо процесса;

— использование случайной строки в качестве «исходного материала» для более сложного скрипта и т.д.

При творческом подходе можно найти и другие сферы применения случайных строк.

В PHP нет специальной функции, которая выполняла бы интересующую нас задачу, поэтому такой инструмент нужно писать самому под свои нужды.

Ниже привожу один из вариантов решения этой задачи.

Поскольку материал рассчитан на новичков, сделаю пояснения по работе данной функции.

Поскольку выполнение функции не имеет смысла при нулевой или отрицательной длине результирующей строки и будет нарушено при указании числа, не являющегося целым, мы предусматриваем данные ситуации и возвращаем ложь.

Если первый параметр корректный, то мы подсчитываем количество символов, участвующих в формировании строки с помощью функции count() и вычитаем из получившегося числа единицу. Для чего мы это делаем? На этот вопрос я отвечу чуть позже, а пока идем дальше по функции.

Объявив переменную $string для хранения итогового результата, мы приступаем к формированию случайной строки в цикле for.

В качестве начального значения счетчика $i цикла выступает количество символов, которое мы хотим увидеть в случайной строке ($str_length).

Затем идет условие, что цикл должен выполняться до тех пор, пока значение счетчика больше нуля.

Наконец, после каждой итерации цикла мы уменьшаем значение счетчика на единицу с помощью оператора декремента «—«.

Таким образом, в цикле будет совершено столько итераций, сколько символов мы хотим получить в итоговой строке.

Ну а теперь посмотрим на тело цикла и вернемся к вопросу о том, для чего мы вычитали единицу из общего количества символов в переменной $str_characters.

Как вы видите, итоговую строку мы формируем, последовательно добавляя к переменной $string по одному символу за каждый проход по циклу.

Давайте посмотрим детальнее.

Смысл использования этой функции в том, что с ее помощью мы создаем случайное число, которое используется как индекс для массива $str_characters.

Индекс указывает на то, какой именно символ из массива $str_characters мы хотим получить.

Вот мы и подошли к ключевому моменту. Если бы первый элемент мы получали с помощью конструкции вида

то тогда последний элемент можно было бы получить, написав следующее (ведь в массиве у нас 62 элемента):

Это было бы вполне логично, но, к сожалению, неверно.

В действительности первый элемент доступен через

а 62 элемент (последний) через

Вы можете убедиться в этом просто выведя на экран данные значения.

Теперь становится совершенно понятно, для чего мы вычитали из 62 единицу. Только лишь для того, чтобы диапазон наших индексов был от 0 до 61. Именно это обеспечит нам корректное формирование случайной строки без вероятности случайно обратиться к несуществующему элементу с индексом 62.

Осталось вызвать ее и передать в качестве параметра желаемое количество символов в нашей случайной строке, например так:

В результате мы получим нечто совершенно бессвязное, вроде:

Цель достигнута, и теперь мы можем творчески применять нашу функцию там, где это необходимо.

Разумеется, наша функция универсальна и прекрасно работает также с русским языком. В коде выше вы можете увидеть еще один вариант массива $str_characters (он закомментирован), который содержит кириллические символы.

Для того, чтобы в этом убедиться, мы можем закомментировать первый массив $str_characters (с латинскими символами) и раскомментировать второй.

Теперь, если мы обновим страницу, то получим что-то вроде:

Таким образом, вы можете использовать любые символы, какие только захотите. Для этого вы можете или добавить их в уже существующий массив, либо создать новый.

И напоследок одно замечание, которое может быть полезно.

Уверен, что вы, как пользователь, встречались со случайно сгенерированными паролями, в которых едва ли можно понять, что что же это за символ:

— то ли маленькая буква «l», то ли цифра «1»;
— то ли русская «с», то ли английская «c»;
— то ли русская «у», то ли английская «y»;
— то ли ноль, то ли буква «о» (опять-таки, русская или английская);
— и т.д.

Поэтому, если вы сами генерируете какую-то строку для других пользователей, стоит позаботиться о том, чтобы она точно была им понятна. Представьте, что вы оказались на месте другого человека и гадаете: «Что же это такое?», «Буква это или цифра, черт возьми?»

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

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

Уважайте ваших пользователей, и они ответят вам взаимностью. Ну а я на этом заканчиваю, до встречи в новых материалах!

С уважением, Дмитрий Науменко

Понравился материал и хотите отблагодарить?
Просто поделитесь с друзьями и коллегами!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *