base_convert($id, 10, 36);
Использую преобразованный ID из таблицы MySQL в 36-ричной системе счисления в качестве уникального короткого URL. Может ли пользователь увидеть какое-то неприятное слово в таком URL?
UPDATE
Кажется уже разобрался, число 739172. Мда, есть там матерные слова.
Ответ
Насколько я понял, итоговая цель не узнать, есть ли матерные слова в 36-ричной системе счисления, а сгенерировать ID, таких слов не содержащие, на базе числа-идентификатора из БД.
Есть библиотека, которая занимается генерацией таких ID - hashids - и у нее есть встроенная защита от бранных слов
This code was written with the intent of placing created ids in
visible places, like the URL. Therefore, the algorithm tries to avoid
generating most common English curse words by generating ids that
never have the following letters next to each other: c, f, h, i, s, t, u
Защита нацелена на английские слова, но идея настолько проста, что ее легко расширить без составления словарей.
Пример использования библиотеки:
$hashids = new Hashids('my secret key');
$id = $hashids->encode(1, 2, 3); // o2fXhV
$numbers = $hashids->decode($id); // [1, 2, 3]
Комментариев нет:
Отправить комментарий