php уникальный идентификатор для клиентов - PullRequest
8 голосов
/ 08 ноября 2011

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

после создания идентификатора идентификатор вставляется в базу данных

вот мой код:

function makeUnique() {
 $start_time = uniqid(microtime(1));
 $duration = sprintf('%0.24f', $start_time);
 return date('dmYHis').$duration;
}

echo makeUnique();

это вывод: 071120112032291320715949.928639888763427734375000

по какой-то причине я получаю 071120112032291320715949 как число.что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 08 ноября 2011

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

return str_replace('.', '', date('dmYHis').$duration);

и убедитесь, что поле достаточно большое - как varchar (50)

Я бы порекомендовал просто хэшировать идентификатор клиента с помощью md5

.

md5($clientid)

и у вас есть поле mysql в виде символа (32)

4 голосов
/ 08 ноября 2011

Вы уже нашли свое решение в своем коде. Функция php uniqid () предоставляет ... ну, уникальный идентификатор. Если вы хотите убедиться, что он действительно действительно действительно уникален (хотя в этом нет необходимости), просто добавьте time () в конец, например, так:

    return uniqid().time();

Это также вернет буквы, смешанные с числами (более высокая энтропия), как этот ответ:

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