2012-02-26 117 views
1

我想要一個非常小的Web應用程序(使用PHP),允許用戶添加一個文本文件。編輯它,然後保存它。如何爲用戶管理多個文件管理?

我的問題是 - 如果我有100個用戶 - 他們都上傳文件「myFile.txt」 - 我如何管理每個文件將保存在不同的地方 - 所以他們不會重寫另一個?

我需要附加一個隨機數: myFile_randomness010101010.txt - 所以我會知道哪個文件屬於誰? 然後呢?當他們想要下載他們已經改變的東西時,我只是拿出這個數字?以及我如何知道哪些文件轉發給誰?

我認爲答案有事情做與餅乾 - 但我不知道究竟怎麼了..

它是如何工作的?我從哪說起呢? 謝謝, Alon

回答

1

真的很簡單。追加一個時間並可能有一些唯一的ID(可能簡單uniqid())。如果你不想讓時間變得可讀,可以考慮哈希。

現在你最擔心的是獲取文件,對吧?最好將原始名稱和脾氣的名稱都存儲在數據庫中。這意味着您可以在前端顯示原始名稱,但可以使用唯一的名稱。

其他解決方案並沒有太多的失敗證明。例如,您可以附加用戶的SID,但這意味着用戶不會在另一個會話中獲取該文件(並且可能其他用戶可能會編輯他們自己獲取它)。

0

我一直爲此做的是將文件存儲在名爲數據庫中文件的ID的文件夾中。這樣原始文件名被保留下來,並且文件夾名稱會相對較短,並且您在技術上不需要存儲除數據庫中的id以外的任何內容,因爲該文件夾中的唯一文件是您要查找的文件。

0

Cookie會起作用;創建一個隨機哈希,然後使用PHP的set_cookie()將哈希保留在他們的計算機上,只要您願意,然後在訪問者進入頁面時調用cookie(如果存在)。

$fileName=($_COOKIE['your_cookie_name']) ? $_COOKIE['your_cookie_name'].'.txt' : 'myFile.txt'; 
0

只需創建一個新的目錄爲每個用戶 - 它命名爲基於其數據庫記錄一些獨特的東西,如用戶ID。

當您將文件移動到新位置時,將其移動到/ files/$ userid /例如。

然後要訪問這些文件,你可以做同樣的事情img src =「files/$ userid/filename」例如。

不交叉,不從別人覆蓋,其他用戶無法訪問文件(除非它們可以得到或知道用戶ID)

1

是的,你說得對餅乾的機會。您可以使用Session執行此操作。 PHP會話使用Cookies。

一個簡單的方法:

//uploadbegin.php or login.php etc 
session_start(); 

//validate user logon and 
$_SESSION['USERNAME'] = <user name> 

下處理文件上傳部分。

//fileupload.php 

session_start(); //start the session.. 

$user = $_SESSION['USERNAME']; 

$content = //get the contents of the file received by HTTP Post to a file or a database. 

$rand = //some random number 

$fileName = "$user/file$rand"; 

//this file may be inside a directory named after the user or something like that. 
file_put_contents($fileName, $content); 

//add this filename and path to the database along with the $user. 

現在獲得文件內容,檢查$_SESSION變量(在用戶登錄或類似的東西后),獲取文件路徑,吐出內容到一些HTML編輯控制。

HTH