Пожалуйста, посмотрите мой ответ на другой вопрос того же характера, функция может быть изменена в соответствии с вашими потребностями:
Случайные URL-адреса PHP (короткий URL)
как указано выше, адреса электронной почты уникальны, и если вы сохраните их в базе данных, вы получите уникальный идентификационный номер из столбца автоинкремента.
С этим идентификатором вы сможете использовать вышеуказанныйфункция для создания уникального хэша для этого идентификатора и сохранения его в той же строке, тогда у вас есть 2 идентификатора для вашего адреса электронной почты, идентификатор для внутреннего использования и зашифрованный ключ для использования в качестве службы коротких URL.
в качестве альтернативы существует более простой подход, когда вы постоянно создаете случайную строку, а затем проверяете, находится ли она в вашей базе данных, находится ли ключ в вашей базе данных, тогда вы генерируете другой и проверяете снова, пока не получите уникальный идентификатор.
Вот краткий пример:
function createRandomID($length = 9)
{
$random = '';
for ($i = 0; $i < $length; $i++)
{
$random .= chr(rand(ord('a'), ord('z')));
}
return $random;
}
, а затем просто выполните:
do
{
$id = createRandomID();
}while(!idExists($id));
//Insert $id into our DB along with the email!
Примечание: ограничение символов влияет на количество уникальных строк, которые он может создать, чем больше строк в вашей базе данных, тем выше становится частота цикла, что может увеличить нагрузку на вашу БД и привести к более медленным страницам для пользователя.