2017-10-19 110 views
-5

我一直试图从<teaxtarea>获取数据输入并将其附加到服务器中的.txt文件中,而每次有人输入时都会将其附加到服务器中。服务器端语言目前是PHP。我一直在尝试在线或在教程中寻找可能的解决方案,但最终可能会得到不满意的结果。我非常确定这是一件非常简单的事情,但作为一个新手(前几天刚刚开始PHP),我现在真的迷失了方向。获取HTML数据并将其附加到服务器中的.txt文件中使用PHP

帮助将不胜感激。

我已经尝试了很多方法,现在有点失落。这是我尝试过的失败之处。 -

<?php 
 
    
 
    $myfile = "input.txt"; 
 
    $txt = $_POST["text"]; 
 
    fopen($myfile, "a"); 
 
    fwrite($myfile, $txt); 
 
    fclose($myfile); 
 

 
    ?> 
 
    <!DOCTYPE html> 
 
<html> 
 
    <head></head> 
 
    <body> 
 
    
 
     <form action = "<?php $_PHP_SELF ?>" method = "POST"> 
 
     <textarea name="text"></textarea> 
 
     <input type="submit"></input> 
 
     </form> 
 
    
 
    </body> 
 
    </html>

+4

“我一直在努力” - 然后告诉我们一个[ MCVE。写作[另一个教程]没有意义(https://duckduckgo.com/?q=php+write+file&t=hf&ia=web) – Quentin

+0

我们希望看到您已经做了哪些工作来提供帮助。 – cometguy

+0

问题已更新。 –

回答

0

你的形式采取行动是错误的。

你可以留空,因为目标的PHP代码是在同一页上,或使用

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> 

而像戈登说,你必须定义一个文件,例如

$filePath = './file/path.txt'; 
$file = fopen($filePath, 'a'); 
frwite($file, $message); 
fclose($file); 
+0

感谢您的回复,但我的行动似乎正在工作。 –

1

请参考fopenfwrite的文档。

fopen将返回一个文件指针,您需要将其传递给fwritefclose之类的任何函数。传递文件名不起作用。

此外,在fopen中使用“a”需要该文件存在。如果需要,将其更改为“a +”以创建它,并确保该脚本有权这样做。

最后,如果您希望新表单提交新行,您需要自己添加新行,因为“a”只会将文件指针放在文件末尾。它不会为你添加换行符。

这应该工作:

<?php 

if (isset($_POST["text"])) { 
    $txt = $_POST["text"]; 
    $fp = fopen("text.txt", "a+"); 
    fwrite($fp, $txt . PHP_EOL); 
    fclose($fp); 
} 

?> 
<!DOCTYPE html> 
<html> 
    <body> 
     <form method = "POST"> 
      <textarea name="text"></textarea> 
      <input type="submit"></input> 
     </form> 
    </body> 
</html> 

作为替代fopenfwritefclose组合,你也可以只使用

file_put_contents("text.txt", $_POST["text"] . PHP_EOL, FILE_APPEND); 
+0

非常感谢!我错了。 我已经编辑它到这个 - '$ myfile = fopen(“input.txt”,“a”);'它似乎正在工作并按预期追加数据。 那个打击者只是让我付出了12代表,但没问题,我需要sacrfice前进。 –

相关问题