如何正确地将HTML输入文本赋予PHP$file变量?

如何正确地将HTML输入文本赋予PHP$file变量?,php,html,file,input,Php,Html,File,Input,我和一位朋友一直在试图弄清楚如何在HTML代码中输入文本以键入文件名,并将该输入作为变量传递给PHP文件。代码的目的是允许用户键入文件名并单击submit,然后下载文件 以下是我们使用的两个文件片段,希望它能起作用: HTML: 以及PHP文件,该文件应该允许用户下载该文件 <?php $file = $_POST["input"]; if (file_exists($file)) { header('Content-Description: File Transfer');

我和一位朋友一直在试图弄清楚如何在HTML代码中输入文本以键入文件名,并将该输入作为变量传递给PHP文件。代码的目的是允许用户键入文件名并单击submit,然后下载文件

以下是我们使用的两个文件片段,希望它能起作用: HTML:

以及PHP文件,该文件应该允许用户下载该文件

<?php
$file = $_POST["input"];
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
?>
如果有什么方法我可以详细说明,那么请评论。否则,如果有一个好的相关来源/问题,我也可以阅读,那将是很好的


感谢您抽出时间阅读我的问题

那个代码包含了一个很大的安全漏洞!有人可以从你的服务器下载任何数据我认为你的代码没有错误,你到底有什么问题?你不能在这里打开讨论,这种讨论问题有无限的答案,而且不会有尽头。同样,也不是要求外部资源的地方->请参阅帮助中心,顺便说一句,给输入字段id输入不是一个好的做法…语法应该是$file=$\u FILES[input];而不是$file=$\u POST[input];因为我们在处理文件。甚至可能type=text-to-type=file,很难说清楚您想要实现什么。他们是否为所述文件输入一个单词?要做到这一点,他们需要知道确切的文件名。这里没有我的论点。我希望这是一个小型的内联网,不会被放在公共网站上。
<?php
$file = $_POST["input"];
if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    readfile($file);
    exit;
}
?>