我正在尝试从HTML文本表单中获取用户的输入
<input type="text" name="comments" value="Comment">
当用户点击表单的提交按钮时,有没有办法将输入文本作为txt文件提交,就好像我有一个
type='file'
表格类型?
(我可以在这个项目中使用原生的html,js或php)
答案 0 :(得分:2)
首先,创建一个名为temp
的目录,然后将.htaccess
文件放入其中,其中包含:deny from all
。
然后用代码创建一个php脚本:
<?php
if (!empty($_POST)) {
file_put_contents('temp/file.txt', $_POST['comments']);
}
不要忘记临时文件夹的写权限!
BUT!永远不要保存.php
扩展名的文件,因为一些真黑客可以在textarea中编写php代码,然后保存并执行它(如果你不用.htaccess
创建deny from all
)。此外,您可以使用chmod拒绝执行temp/
目录中的所有文件(仅适用于linux,对于Windows .htaccess
将帮助您)。您也可以将temp/
目录放在服务器的www/
(webroot)目录下(www/
目录的路径是这样的:/site.com/www/
,只需创建一个dir with path:/site.com/temp/
),然后没有人可以执行创建的文件。将文件写入此文件夹将如下所示:
file_put_contents('../temp/file.txt', $_POST['comments']);
答案 1 :(得分:1)
如果您想将用户的输入作为文本文件而不是提交的文本,那么您可以使用以下javascript方法:
// JavaScript
function download(filename, text) {
var dom = document.createElement('a');
dom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
dom.setAttribute('download', filename);
dom.click();
}
从按钮捕获click事件,然后使用注释中的文件名和文本调用download()函数。
答案 2 :(得分:0)
type =“file”是发布一个表格的文件。如果要插入用户提供的文本,则必须自行处理。有几种方法可以在文件中插入内容,你可以查看fwrite或file_put_contents。