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

  • Последнее обновление: 3 Апреля 2024 г.
  • Просмотры: 17
  • Автор: Админ
Как сгенерировать случайную уникальную строку в PHP

Коллеги всем привет.

В сегодняшней статье мы поговорим о том как сгенерировать уникальную строку в PHP.

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

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

 

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

php> uniqid();

string generate

Мы вызвали функцию uniqid два раза и получили в результате две уникальные строки.


 

В следующем варианте, чтобы сгенерировать уникальную строку, мы будем использовать две функции, random_bytes и bin2hex.

php> bin2hex(random_bytes(20));

string generate

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


 

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

php> substr(md5(time()), 0, 10);

string generate

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


 

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

php> substr(sha1(time()), 0, 5);

php> md5(time());

php> sha1(time());

string generate


 

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

Первая функция.

function generateRandomString($length = 20) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

string generate

 

Вторая функция.

function rand_str() {
    $characters = '0123456789ampabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $randomstr = '';
    for ($i = 0; $i < random_int(10, 30); $i++) {
        $randomstr .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $randomstr;
}

string generate


 

Всем спасибо, я надеюсь что вам моя статья хоть чем-то помогла.

 

ПОХОЖИЕ СТАТЬИ

Как получить расширение файла - PHP
Yii2 - как отключить CSRF валидацию токена
Как сгенерировать случайное и уникальное число в PHP
Как узнать длину строки в PHP - strlen, mb_strlen