我正在尝试构建一个包含两个部分的简单Web应用程序。
A部分: 用户获得一个链接。在该链接上,只有一个按钮。当他点击该按钮时,应该发生三件事:
1)他从服务器下载文件。 2)运行一个php脚本,将下载时间保存到数据库(对于该用户)。 3)重定向到另一个页面 - > B部分
B部分: 在第二页上,有两个按钮。浏览按钮从磁盘中选择文件。上传按钮将文件上传到服务器。这一部分还有三件事。
1)文件上传并保存在服务器上。 2)上传时间插入数据库(对于该用户)。 3)如果用户试图打开链接(来自A部分),他会自动重定向到B部分。因此无法进入A部分再次下载文件。
额外部分: 1)我想有一个计时器来测量自文件下载以来经过的时间。此计时器将显示在页面B上,每秒更新一次。 2)如果可能,此计时器将禁用上传选项(假设120分钟后)。 2)我应该关注安全性(https)吗?
我是PHP的初学者。从我读到的内容来看,我必须将JS和PHP结合起来才能实现这一目标。那是对的吗?你会如何构建这个应用程序?
编辑 - 解决方案:
我有解决方案。想在这里发布,但它太长了。如果您有兴趣,可以PM我和我将发送给您。
答案 0 :(得分:0)
您可以向用户提供响应中的文件设置标题和内容,也可以执行与数据库相关的操作,因此您的链接可以直接下载到文件下载。通过这种方式,您可以更好地控制它,即使用户已禁用javascript,它也会使其正常工作。
请参阅此帖子PHP xlsx header
如果文件用户下载量很大,那么您可以考虑使用XSendFile,因此您不需要通过PHP读取文件,然后根据标题编写其内容。使用xsendfile,您将发送一个头文件,文件将由http服务器在内部响应发送给用户,因此php不需要读取文件然后将其打印到响应中。
对于计时器,你会使用javascript,所以你对你需要php和js是正确的。您还可以显示上传过期日期,倒计时将是很好的补充。如果您在x秒后过期上传,我会考虑额外的文件上传时间和页面加载时间,或使用$_SERVER['REQUEST_TIME']
。
REQUEST_TIME是:
请求开始的时间戳。从PHP 5.1.0开始提供。
因此,您可以计算时差以检查上传时间是否过期。