使用 PHP 将表单输入写入文本文件

Write form inputs to text file using PHP

提问人:Johnny Bravo 提问时间:6/14/2023 最后编辑:ADysonJohnny Bravo 更新时间:6/14/2023 访问量:63

问:

我正在尝试做的是在提交时将表单中的输入写入单独的文本文件中。请注意,表格不能更改。

问题是,如何将输入保存在单独的 TXT 文件中? 这是形式:

<form method="post">
<textarea id="name"></textarea>
<textarea id="message"></textarea>
<input type="submit" name="submit">
</form>

这是我尝试这样做的方式:

<?php 
if(isset($_POST['submit']))
 {
  $name = $_POST['#name'];
  $message = $_POST['#message'];
  $text = $name . "," . $message . "\n";
  $fp = fopen('questions.txt', 'a+');

    if(fwrite($fp, $text))  {
//  ini_set('display_errors', 1);
//  ini_set('display_startup_errors', 1);
//  error_reporting(E_ALL);
        echo 'Thank you!';
    }
fclose ($fp);    
} ?>

请注意,我在这里阅读了许多解决方案,所有表单都具有带有名称的输入(即)。不幸的是,我的表单无法更改,这就是为什么我尝试(未成功)使用希望使用输入 ID(注意 #)。name='message'$name=$_POST['#name']

是否可以在不修改表单的情况下将输入保存到文本文件? 文件问题.txt存在,可写 777。

谢谢。

php html 表单 fopen fwrite

评论

0赞 Johnny Bravo 6/14/2023
忘了提到取消注释错误行不会显示任何 PHP 错误。表单已提交,但详细信息未写入文件,该文件为空。
0赞 j08691 6/14/2023
Form 元素必须具有 name 属性,才能被 PHP 有效和可读。ID 不是合适的替代品
0赞 Dave S 6/14/2023
将错误行放在文件顶部,紧跟在行之后。您可能会收到有关未定义变量/数组元素的警告。<?php
0赞 ADyson 6/14/2023
developer.mozilla.org/en-US/docs/Learn/Forms/......: “我们为每个表单控件提供了一个 name 属性。这些名称在客户端和服务器端都很重要;它们告诉浏览器给每条数据起哪个名字,在服务器端,他们让服务器按名称处理每条数据。表单数据以名称/值对的形式发送到服务器。表单字段中没有任何名称。如果您真的遵循了任何教程 php.net/manual/en/tutorial.forms.php.This 还有相当基本的知识
1赞 ADyson 6/14/2023
Unfortunately, my form cannot be altered...为什么不呢?这毫无意义。如果没有它们,表单永远不会向服务器发送任何内容,无论您在 PHP 中更改了什么。数据永远不会到达 PHP。

答:

1赞 symcbean 6/14/2023 #1

这里有一个问题目录。

这就是为什么我尝试(未成功)使用 $name=$_POST['#name'] 希望使用输入 ID(注意 #)。

通过使用提供的 Web 开发人员工具查看浏览器发送的数据或将表单指向(例如),检查这一点非常微不足道:

<pre>
<?php print_r($_POST); ?>
</pre>

至少在Firefox中,除了提交按钮之外,浏览器不会将任何数据发送回服务器。如果您不能使用表单重写 HTML 页面(或添加 Javascript),那么这将永远无法奏效。

暂且不谈......

我可以将输入保存到文本文件吗

是的,但这是一个坏主意。我们使用数据库来存储数据有多种原因。

它是可写的 777

这总是一个坏主意。允许 PHP 写入 Web 根目录中的文件也是如此。

评论

0赞 Johnny Bravo 6/19/2023
我可以添加 Javascript。如上所述,它是一个加密的WP联系人插件,因此无法更改文件/表单。我不太关心安全性,我只想要一个额外的日志来证明有人联系了我,因此有了额外的 777 文件。我认为这是最简单的方法,但我开始怀疑。插件本身保留日志,外部文件将是这些消息的某种备份。PS 为什么要提到javascript,有没有办法使用js?