用户内容文件夹结构基于UserID,同时隐藏总用户

时间:2011-07-10 01:56:52

标签: php sqlite userid directory-structure

我正在尝试找出一个文件夹结构来存储用户内容,例如图片,这些内容适用于大量用户。我打算用... 000/000/001 (用户ID 1)....每个文件夹999最大子文件夹。

但是我想隐藏用户总数,从1开始很容易看到。我应该从像349203480这样的随机数开始吗?我很困惑如何以这种方式基于ID计算出文件夹。有没有更好/更简单的方法?

2 个答案:

答案 0 :(得分:1)

使用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));
?>

创建唯一的文件夹,创建唯一的子文件夹。包括你自己在内的任何人都不会知道你拥有多少...除非你在FileSystem上对文件夹/子文件夹进行计数,或者保持实际用户对GUID的引用

答案 1 :(得分:0)

嗯,最简单,最简单的方法就是你的建议。使用随机数预先开始计算用户。

另一种方法是将随机数附加到您的用户ID。

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

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

但是,当然,上面的方法有检查文件夹是否已存在的开销。

第三种方法是在用户名/ id上使用简单加密(例如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, ...

同样,您必须存储文件夹的数量,或者从目录中即时获取。最后一种方法的优点是,只要了解foldername,就可以找出它属于哪个用户。