Получение случайных элементов с помощью PHP

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

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

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

function shapeSpace_randomizer() {return rand(1000000,9999999);}

Применение:

$random_number = shapeSpace_randomizer();

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

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

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

function shapeSpace_random_string($length) {$characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$strlength = strlen($characters);$random = '';for($i = 0; $i < $length; $i++) {$random.= $characters[rand(0, $strlength - 1)];}return $random;}

Применение:

$random_string = shapeSpace_random_string(10);

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

function shapeSpace_random_string($length) {$characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$random = substr(str_shuffle($characters), 0, $length);return $random;}

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

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

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

function shapeSpace_random_string($length) { $characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";srand((double)microtime()*1000000); $random = '';for($i = 0; $i < $length; $i++) { $random.= $characters[rand() % strlen($characters)]; }return $random; }

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

$random_string = shapeSpace_random_string(10);

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

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

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

function shapeSpace_random_string_readable($length) {$c = array('b','c','d','f','g','h','j','k','l','m','n','p','r','s','t','v','w','x','y','z');$v = array('a','e','i','o','u');srand((double)microtime()*1000000);$max = $length / 2;$random = '';for($i = 1; $i <= $max; $i++) {$random.= $c[rand(0,19)];$random.= $v[rand(0,4)];}return $random; }

Применение:

$random_string = shapeSpace_random_string_readable(10);

Этот программный код выдает случайную строку, состоящую из 10 символов. Можно легко настроить 10 на нужное число. Его также можно использовать, чтобы сгенерировать случайное число PHP.

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

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

function shapeSpace_get_random_items($length) {$items = array('item 1','item 2','item 3','item 4','item 5','item 6','item 7','item 8',);$n = array(1, 2, 3, 4, 5, 6, 7, 8);srand((double)microtime()*1000000);$rand = array_rand($n, $length);sort($rand);$random = '';foreach($rand as $r) $random = $items[$r].' ';return $random;}

Применение:

$random_string = shapeSpace_get_random_items(4);

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

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

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

function generatePassword($length=9, $strength=0) { $vowels = 'aeuy'; $consonants = 'bdghjmnpqrstvz'; if($strength & 1) { $consonants.= 'BDGHJLMNPQRSTVWXZ'; } if($strength & 2) {       $vowels.= "AEUY";    }    if($strength & 4) {        $consonants.= '23456789';    }    if($strength & 8) {        $consonants.= '@#$%';    }     $password = '';    $alt = time() % 2;    for($i = 0; $i < $length; $i++) {        if($alt == 1) {            $password.= $consonants[(rand() % strlen($consonants))];            $alt = 0;        } else {            $password .= $vowels[(rand() % strlen($vowels))];            $alt = 1;        }    }    return $password;}

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

$password = generatePassword(18, 8);

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

Я экспериментировал с простыми методами блокирования спама в создаваемом плагине чата и решил попробовать использовать поле ввода Ajax nonce . Вот код, который я использовал для генерации nonce (скрытый ввод):

$nonces = array('Y4-B84pY:IN:;th1H$r+O8cF','IA/,HwsA^y@V0Rre(jF](^P+','kW5oJsj,M4$.}?Zf/GqqZcaz','=1ekfx)K#_5goJ6HrifbK=Ss','8#8r)z3=ELR;7Oqwcp3V3Nv!','Ei9)OuJaqYRssa]b}wut3;=m','}TM42oi:-HppFF:XYk0OY{DM','z%v3[oRX[:w1pp,3ODHD)m7O','@.,oe/A3KKJAvdtSc{]kogMA','tR7djZB~)hlqs6U*jTcXT+IS',);$random = array_rand($nonces, 1);$nonce = isset($nonces[$random]) ? base64_encode($nonces[$random]) : 0;echo '<input type="hidden" name="sac_js_nonce" value="'. $nonce .'" />';

Далее при обработке запроса Ajax я могу проверить посетителя, сверив представленное значение nonce с известным набором $nonces .

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

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

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