文本文件中的数据在表单提交点击时被删除

时间:2016-12-26 17:16:58

标签: php html html5 forms

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

我的问题是,当他们点击提交并且某个字段未填写时,这实际上会影响.txt文件,并且它们也会结束为空白。我希望文件保留其“旧”文本,除非表单中的textareas包含要覆盖的数据。例如,如果两个.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,否则似乎没有任何区别。回应是应该输出的,但.txt文件仍然被覆盖而没有数据(当textarea为空并且用户点击提交时)。

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

2 个答案:

答案 0 :(得分:0)

我想你需要尝试

file_put_contents($file, $person, FILE_APPEND);

用于写文件。

第一个参数将是name&amp;文件的路径。

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

如果要在现有文件中添加内容,

第三个参数将为FILE_APPEND。

如果你不使用3nd参数,那么它将一直替换文件的内容。

Source

答案 1 :(得分:0)

>之后,您的html中缺少<textarea type="text" name="postInput"。 试着把它放在上面。