【问题标题】:Data in text file gets erased on form submit click文本文件中的数据在表单提交点击时被删除
【发布时间】:2017-05-11 02:20:31
【问题描述】:

对于网站,用户应该能够键入标题并在表单中发布,然后按提交按钮输入它们。按下提交按钮后,表单中的数据将写入其分配的文本文件,这些文本文件与网页位于同一文件夹中。写作工作正常,但正如您在下面看到的,我试图这样做,以便如果用户单击提交按钮而没有填写站点中的两个字段之一(或两个字段都不填写)将提示他们输入文本,不进行文件写入。

我的问题是,当他们单击提交并且未填写字段时,这实际上会影响 .txt 文件,并且它们最终也会变为空白。我希望文件保留它们的“旧”文本,除非表单中的两个文本区域都包含要覆盖的数据。例如,如果两个 .txt 文件中都有文本,并且我在表单上单击提交而表单中没有文本,则这两个 .txt 文件将保留它们的文本,而不是被覆盖而没有文本(这是当前发生的情况) .

这是html和php:

<form action="AdminBlog.php" method="post">
    Blog Title:<textarea type="text" name="titleInput"></textarea><br><br>
    Blog Post:<textarea type="text" name="postInput"></textarea><br><br><br>
    <input type="submit" value="Submit"/>
</form>


<?php
$titleFile = fopen("Title.txt","w");

$blogTitle = null;

$postFile = fopen("Post.txt","w");

$blogPost = null;


if(!empty($_POST['titleInput']) && !empty($_POST['postInput'])) {
$blogTitle = $_POST['titleInput'];
fwrite($titleFile,$blogTitle);
fclose($titleFile);

$blogPost = $_POST['postInput'];
fwrite($postFile,$blogPost);
fclose($postFile);
}

if (empty($_POST['postInput']) || empty($_POST['titleInput'])) {
echo "Please enter a title and post.";
}

?>

将最后的 if 语句更改为 elseif 或 else 似乎并没有什么不同。回显在应该输出的时候被输出,但 .txt 文件仍然被覆盖而没有数据(当 textarea 为空白并且用户单击提交时)。

编辑:只是想添加一些东西。我不确定这是否相关,但文件中是否有文本,我无法从另一个 .php 文件中读取文本。我可以从同一个,但是当试图在另一个 .php 页面中获取 .txt 文件内容时,我不能这样做。这也给我带来了一个单独的问题,只是想提一下以防万一。

【问题讨论】:

    标签: php html forms


    【解决方案1】:

    我觉得你需要试试

    file_put_contents($file, $person, FILE_APPEND);
    

    用于写入文件。

    第一个参数将是文件的名称和路径。

    第二个参数将是字符串格式的数据。

    如果您想在现有文件中添加内容,第三个参数将为 FILE_APPEND。

    如果您不使用第三个参数,那么它将一直替换文件的内容。

    Source

    【讨论】:

    • 如前所述,我希望仅当 textarea 字段中有数据时才替换内容。我不想添加它。
    【解决方案2】:

    在您的 html 中 &lt;textarea type="text" name="postInput" 之后缺少一个 &gt;。 试着穿上它。

    【讨论】:

    • 那只是我复制和粘贴代码的时候,而不是在我的实际脚本中。]
    猜你喜欢
    • 2017-12-23
    • 1970-01-01
    • 2013-10-18
    • 1970-01-01
    • 2020-06-19
    • 1970-01-01
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多