我希望有一个非常小的Web应用程序(使用PHP),允许用户添加文本文件。编辑它,然后保存。
我的问题是 - 如果我有100个用户 - 并且他们都上传了文件“myFile.txt” - 我如何管理每个文件将保存在不同的地方 - 所以他们不会重写一个另一个吗
我需要附加一个随机数字,如: myFile_randomness010101010.txt - 所以我会知道哪个文件属于谁? 然后什么?我只想在他们想要下载他们已经改变的内容时拿出这个号码吗?以及如何知道哪些文件归谁?
我认为答案与Cookies有关 - 但我不知道究竟是怎么回事......
它是如何工作的?我从哪里开始? 谢谢, 阿龙
答案 0 :(得分:1)
真的很直接。附加时间和可能的一些唯一ID(可能是简单的uniqid()
)。如果您不希望时间可读,请考虑对其进行散列。
现在您担心的主要问题是恢复文件,对吧?最好只将原始名称和受限制的名称存储在数据库中。这意味着您可以在前端显示原始名称,但使用唯一的名称。
其他解决方案并非如此。例如,您可以附加用户的SID,但这意味着用户不会在另一个会话中获取该文件(可能其他用户可能会编辑他们自己获取该文件)。
答案 1 :(得分:1)
是的,你对cookie是正确的。您可以使用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
答案 2 :(得分:0)
我一直为此做的是将文件存储在一个文件夹中,该文件夹名为数据库中文件的id。这样就保留了原始文件名,并且文件夹名称相对较短,从技术上讲,您不需要在数据库中存储除id之外的任何内容,因为文件夹中的唯一文件是您要查找的文件
答案 3 :(得分:0)
Cookies会起作用;创建一个随机哈希然后使用PHP的set_cookie()
在他们的计算机上保留该哈希,只要你愿意,然后在访问者访问页面时调用cookie(如果它存在。)
$fileName=($_COOKIE['your_cookie_name']) ? $_COOKIE['your_cookie_name'].'.txt' : 'myFile.txt';
答案 4 :(得分:0)
只需为每个用户创建一个新目录 - 根据其数据库记录中的唯一内容命名,例如用户ID。
当您将文件移动到新位置时,请将其移至/ files / $ userid /。
然后访问文件你会做同样的事情,例如img src =“files / $ userid / filename”。
没有交叉,没有机会被别人覆盖,其他用户无法访问文件(除非他们被授予访问权限或知道用户ID)