Структура папки с пользовательским содержимым, основанная на идентификаторе пользователя и скрывающая всех пользователей

Я пытаюсь выяснить структуру папок для хранения пользовательского контента, такого как изображения, который будет работать для огромного количества пользователей. Я собирался пойти с чем-то вроде... 000/000/001 (идентификатор пользователя 1) ....999 макс подпапки на папку.

Но я хотел бы скрыть общее количество пользователей, которое легко увидеть, начиная с 1. Должен ли я начинать с некоторого случайного числа, например 349203480? Я озадачен тем, как работать с папками на основе идентификатора таким образом. Есть ли какой-нибудь лучший / более простой способ?

2 ответа

Используйте GUID:

Согласно руководству по PHP:

<?php
/* A uniqid, like: 4b3403665fea6 */
 printf("uniqid(): %s\r\n", uniqid());

/* We can also prefix the uniqid, this the same as 
 * doing:
 *
 * $uniqid = $prefix . uniqid();
 * $uniqid = uniqid($prefix);
 */
printf("uniqid('php_'): %s\r\n", uniqid('php_'));

/* We can also activate the more_entropy parameter, which is 
 * required on some systems, like Cygwin. This makes uniqid()
 * produce a value like: 4b340550242239.64159797
 */
printf("uniqid('', true): %s\r\n", uniqid('', true));
?>

Создавайте уникальные папки, создавайте уникальные подпапки. Никто, включая вас самих, никогда не узнает, сколько у вас есть... если только вы не выполняете подсчет папок / подпапок в файловой системе или не ведете ссылку реальных пользователей на GUID

Ну, самый простой и легкий подход - это то, что вы предложили. Предварительно начните считать пользователей со случайным числом.

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

$userid = get_user_id();
$foldername = strval($userid) . strval(rand(1, 999));

//$foldername = 11, 231, ...

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

Третий способ - использовать простое шифрование (например, rot13) для имени пользователя / идентификатора и отсчитывать количество добавляемых папок.

$username = get_user_name();                 //Use the user id if you wish.
$next_folder_count = $last_folder_count + 1;
$foldername = str_rot13($username) . strval($next_folder_count);

//$foldername = hxcvf1, hxcvf2, ...

Опять же, вам придется хранить количество папок или получить его на лету из каталога. Преимущество последнего метода заключается в том, что, просто зная имя пользователя, вы можете узнать, к какому пользователю он принадлежит.

Другие вопросы по тегам