Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Обратимая генерация уникального ID

Автор: xerpal
Дата сообщения: 13.05.2016 16:39
Есть число от 3-х знаков и выше, реальный ID пользователя. Надо по этому числу генерировать на PHP уникальный другой ID - назовем его CODE.
Нужны функции, которая генерила бы на основе ID уникальный CODE и наоборот, получив CODE из него вытаскивала бы ID.
Сейчас вот такое вот понаписано - так и не вкурю, как работает, как мы получаем последнюю цифру


Код: function code_by_id ($id) {
$num = intval($id) + 7000;
$code = str_pad((string)$num, 5, '0', STR_PAD_LEFT);
$byte = 0;
for ($i = 0; $i < 5; $i++) {
$byte += intval($code[$i]);
}
$code .= (string)round($byte/5);
return $code;
}
Автор: Mavrikii
Дата сообщения: 13.05.2016 16:46
xerpal
А смысл всего этого? Вы добавили слева или справа что то - уже другой код, хоть и не полностью ) хотите как то изменить цифры при этом - воспользуйтесь одновременно битовыми операциями над числом.
Автор: xerpal
Дата сообщения: 13.05.2016 18:22
Короче зря написал, просто унифицировал функцию для любой "длины" ID и все ок, работает. Просьба к модератору форума удалить тему.
Автор: Mavrikii
Дата сообщения: 13.05.2016 20:25
xerpal
то, что вы делаете, лишь аналог добавления CRC суммы в конец, для проверки целостности )
смысла не вижу, но.. вам виднее.
Автор: xerpal
Дата сообщения: 13.05.2016 21:02
Mavrikii
Не я изначально делал, но функцию свою выполняет же
Автор: Mavrikii
Дата сообщения: 13.05.2016 22:29
xerpal
насчет смысла я уже написал.. ну да ладно ) вот вам универсальный код

Код: function code_by_id($id, $len = 5, $start = '07')
{
$code = $start . str_pad($id, $len - strlen($start), '0', STR_PAD_LEFT);
return $code . round(array_sum(str_split($code)) / $len);
}
Автор: xerpal
Дата сообщения: 14.05.2016 07:06
Mavrikii
$len это длина строки $id - лишняя в итоге переменная, а так то же самое, что и делал примерно - только не так сжато, без str_split

Автор: Mavrikii
Дата сообщения: 14.05.2016 07:22
xerpal

Цитата:
лишняя в итоге переменная

эм.. ну я же не знаю, вдруг id изначально идет цифрой и возможные нули в начале не дадут определить нужную длину. поэтому и сделал отдельно.


Цитата:
а так то же самое, что и делал примерно

так я просто переписал код выше.

Страницы: 1

Предыдущая тема: html2canvas и css3


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.