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

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

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


person Ael    schedule 10.07.2011    source источник


Ответы (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.

person sdolgy    schedule 10.07.2011

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

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

$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, ...

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

person Sterex    schedule 10.07.2011