Структура на папката с потребителско съдържание въз основа на UserID, като същевременно се скриват всички потребители

Опитвам се да измисля структура на папки за съхраняване на потребителско съдържание като изображения, която ще работи за огромно количество потребители. Щях да избера нещо като... 000/000/001 (потребителски идентификатор 1) ....999 макс. подпапка на папка.

Но бих искал да скрия общия брой потребители, лесно видим, като започна от 1. Трябва ли да започна от произволно число като 349203480? Объркан съм как да разработя папките въз основа на ID по този начин. Има ли по-добър/лесен начин?


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