HTML表单保存到服务器端文本文件

时间:2017-04-30 08:46:46

标签: javascript php html

所有

我发现很多脚本可以保存表单输入到本地计算机,I.E。下载带有提交信息的文本文档,但是我正在尝试开发一个html表单,当提交'按下按钮,将文本字段中的文本保存为单个文本文档。我最接近的是以下(很抱歉,无法找到我最初获得此代码的地方。希望没问题:/)

<html>
<head>
<script>
$myFile = "testFile.txt";
if(isset($_POST['fileWrite']) && !empty($_POST['fileWrite'])) {
$fileWrite = $_POST['fileWrite'];
}
if($fileWrite) {
$fh = fopen($myFile, 'a') or die("can't open file"); //Make sure you have permission
fwrite($fh, $fileWrite);
fclose($fh);
exec('/your/command /dev/null 2>/dev/null &');
}
</script>
</head>

<body>
<form id="some" name="someName" method="post" action="/../PastEntries/file.txt">
<input type="text" id="some1" class="someClass" value="" name="fileWrite"/>
<input type="submit" value="submit" class="submitClass"/>
</form>
</body>
</html>

然而,我收到错误&#34;无法发布/../www/file.txt"
我是PHP新手,不知道如何解决这个问题。我希望有经验的人可以提供帮助或提供替代方案! 提前谢谢!

2 个答案:

答案 0 :(得分:1)

未经测试,但你可以做这样的事情。表单操作被完全删除,因此表单POSTS到同一页面 - 请求由PHP解释,数据写入文本文件。

<?php
    if( $_SERVER['REQUEST_METHOD']=='POST' ){
        $filename=__DIR__ . '\\file.txt';
        file_put_contents( $filename, implode( PHP_EOL,$_POST ) . PHP_EOL, FILE_APPEND );
        exit();
    }
?>
<!doctype html>
<html>
    <head>
        <title>Save Form data to text file</title>
    </head>
    <body>
        <form id="some" name="someName" method="post">
            <input type="text" id="some1" class="someClass" value="" name="fileWrite"/>
            <input type="submit" value="submit" class="submitClass"/>
        </form>
    </body>
</html>

答案 1 :(得分:0)

我正在摆弄你的代码,看看我是否能让它发挥作用。以下是固定版本。

<html>
<head>

<?php

$fileWrite = '';    
$myFile = "testFile.txt";
if(isset($_POST['fileWrite']) && !empty($_POST['fileWrite'])) {
$fileWrite = $_POST['fileWrite'].PHP_EOL;
}
if($fileWrite) {
$fh = fopen($myFile, 'a') or die("can't open file"); //Make sure you have permission
fwrite($fh, $fileWrite);
fclose($fh);
}
?>

</head>

<body>
<form id="some" name="someName" method="post">
<input type="text" id="some1" class="someClass" value="" name="fileWrite"/>
<input type="submit" value="submit" class="submitClass"/>
</form>
</body>
</html>

我已经解决了@RamRider之前指出的问题,并添加了 .PHP_EOL ,以启用新的换行符(check manual for better understanding)。使用此代码,如果有任何错误,请告诉我们。我会尽力帮助。

干杯