我正在尝试找出一个文件夹结构来存储用户内容,例如图片,这些内容适用于大量用户。我打算用... 000/000/001 (用户ID 1)....每个文件夹999最大子文件夹。
但是我想隐藏用户总数,从1开始很容易看到。我应该从像349203480这样的随机数开始吗?我很困惑如何以这种方式基于ID计算出文件夹。有没有更好/更简单的方法?
答案 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,就可以找出它属于哪个用户。