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

Мне нужен уникальный ключ для каждого пользователя в моей базе данных, поэтому я использую детали микровремени, используя метку времени, а затем добавляю к этой строке идентификатор, сгенерированный uniqid, чтобы получить уникальный ключ.Проблема в том, что у ключа слишком много символов.Что делать, если я хочу создать небольшой идентификатор (например, идентификаторы пользователей Facebook).Скажите, пожалуйста, достаточно ли 8-символьного ключа для уникальной идентификации моих пользователей.

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

Можете ли вы сказать мне, если естьЕсть ли какие-либо проблемы с методом, который я описал?

Я знаю, что это может показаться дубликатом, но у меня есть особые потребности, поэтому этот вопрос.

Ответы [ 4 ]

2 голосов
/ 12 января 2011

Создайте в вашей базе данных поле с именем user_id и установите для него значение AUTO_INCREMENT. SQL автоматически назначит уникальный номер каждому пользователю, и вы можете позвонить ему с помощью SELECT запросов.

0 голосов
/ 12 января 2011

Поскольку вы не хотите использовать инкрементные клавиши,

// define this someplace, and with something other than abc...
define('SOME_SALT', 'abcdefghijkl');
$id = substr(sha1($username . SOME_SALT), 0, 8);

Где $username - имя пользователя учетной записи (или какой-либо другой фрагмент данных, уникальный для учетной записи).

0 голосов
/ 12 января 2011

Вы, вероятно, хотите использовать UUID .PHP не может сгенерировать их изначально (вам нужно скачать класс для этого), или ваш SQL-сервер может справиться с этим;например, MySQL имеет UUID () , а MSSQL имеет NEWID () .

Кроме того, если вы собираетесь использовать этот идентификатор в своем интерфейсе (например, какFB использует его для просмотра профилей), вы, вероятно, не захотите использовать инкрементные идентификаторы.Если вы это сделаете, умные пользователи смогут просто изменить идентификатор в URL-адресе, чтобы получить доступ к любому пользователю, которого они хотят.

0 голосов
/ 12 января 2011

Tushar,

Этот вопрос невероятно трудно прочитать без знаков препинания.

Какие СУБД вы используете? Имейте в виду, что некоторые типы имеют максимальную длину символов.

Существуют более простые способы создания уникального идентификатора для первичного ключа. Автоинкремент для MySQL является популярной техникой. Последовательности для Oracle - это другое.

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