PHP уникальный идентификатор на основе имени пользователя / электронной почты - PullRequest
0 голосов
/ 30 марта 2011

У меня есть адрес электронной почты, и я хочу создать уникальный идентификатор на его основе, например, адрес электронной почты me@email.com, который превращается в 66wyy7eu

Я нашел близкое решение http://www.php.net/manual/en/function.uniqid.php#96898, но ему нужно, чтобы ввод был числовым

Ответы [ 5 ]

2 голосов
/ 30 марта 2011

электронных писем уже уникальны.

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

Если вы используете БД.поле автоинкремента будет уникальным

0 голосов
/ 30 марта 2011

Лично я бы использовал что-то вроде md5 () или sha1 (). В PHP есть функция hash (), которая позволяет указать используемый алгоритм: http://php.net/manual/en/function.hash.php

0 голосов
/ 30 марта 2011

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

Случайные 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!

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

0 голосов
/ 30 марта 2011

ты читал про md5? PHP md5 функция

0 голосов
/ 30 марта 2011

Выезд hash().Это должно позволить вам сгенерировать достаточно уникальный идентификатор на основе строкового ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...