【问题标题】:Does tmp_name get destroyed when user goes to another php page?当用户转到另一个 php 页面时,tmp_name 会被破坏吗?
【发布时间】:2012-03-13 02:44:40
【问题描述】:
如果用户转到另一个 php 页面,$_FILES["file_name"]["tmp_name"]; 会被销毁吗?
我正在尝试将隐藏表单字段中的 tmp_name 传递给将 tmp_name 复制到服务器的实际提交函数。
所以这是我的流程:
用户提交表单 -> 用户确认提交(所有 $_POST 都添加到隐藏字段) -> 一旦确认数据已提交并且文件为 copy() 到服务器
【问题讨论】:
标签:
php
forms
file-upload
【解决方案1】:
文件上传工作如下:
- 用户提交表单,上传文件到服务器
- PHP将接收到的文件数据存储在/tmp目录下,将文件名放入脚本的
$_FILES数组中
- PHP 执行您的脚本,您可以随心所欲地处理数据
- 脚本完成后,如果 /tmp 目录仍然存在,PHP 会清理上传的文件数据
所以是的,上传的文件仅可用于单个脚本执行。如果您以后需要它们,请将它们移到更永久的位置。
并且不要将该文件位置传递给用户,即使是通过隐藏的表单字段。那是客户端数据,这意味着用户可以通过将文件路径指向他没有业务的地方来操纵数据并可能导致安全漏洞。