0

画像などのユーザー コンテンツを保存するためのフォルダー構造を見つけようとしています。これは、大量のユーザーに対して機能します。私は... 000/000/001 (user id 1) ....999 フォルダーあたり最大サブフォルダーのようなものを使用するつもりでした。

しかし、ユーザーの総数を非表示にしたいと思います。これは、1 から開始することで簡単に確認できます。349203480 のような乱数から開始する必要がありますか? この方法で ID に基づいてフォルダーを作成する方法について、私は困惑しています。より良い/簡単な方法はありますか?

4

2 に答える 2

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

独自のフォルダーを作成し、独自のサブフォルダーを作成します。ファイルシステム上のフォルダー/サブフォルダーのカウントを行っているか、実際のユーザーのGUIDへの参照を維持していない限り、あなた自身を含め、誰もあなたが持っている数を知ることはありません

于 2011-07-10T05:50:28.690 に答える
0

まあ、最も簡単で簡単なアプローチは、あなたが提案したものです。乱数を使用してユーザーのカウントを事前に開始します。

もう 1 つの方法は、ユーザー ID に乱数を追加することです。

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

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

ただし、もちろん、上記の方法には、フォルダーが既に存在するかどうかを確認するオーバーヘッドがあります。

3 番目の方法は、ユーザー名/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, ...

繰り返しますが、フォルダーの数を保存するか、ディレクトリからその場で取得する必要があります。最後の方法の利点は、フォルダー名を知るだけで、それがどのユーザーに属しているかを知ることができることです。

于 2011-07-10T06:10:08.047 に答える