创建生成唯一 txt 文件的变量,然后在不创建其他文本文件的情况下进行追加

Create variable that generates unique txt file then appends without creating another text file

提问人:Lori 提问时间:10/16/2014 更新时间:10/16/2014 访问量:119

问:

我有一个表单,在提交时创建一个唯一的 .txt 文件名并将表单数据发布到该文件中。这很有效。问题是在它创建文件后,我需要一种方法来附加它而不创建另一个文本文件。因为它是一个表单,所以当它提交时,每次调用提交时都会重新运行代码,我不确定如何处理它。

表格如下:

<body>
<form action="write_to_txt_file2.php" method="POST">
<input name="field1" type="text" />
<input name="field2" type="text" />
<input type="submit" name="submit" value="Save Data">
</form>

这是php: 我不必使用微时间作为唯一变量名称,所以如果有更好的方法,我愿意改变它。

<?php

$myDate = round(10*microtime(TRUE));
$filename = "tmp/".$myDate.".txt";

if(isset($_POST['field1']) && isset($_POST['field2'])) {
    $data = $_POST['field1'] . '-' . $_POST['field2'] . "\n";
    $ret = file_put_contents($filename, $data, FILE_APPEND | LOCK_EX);
    if($ret === false) {
        die('There was an error writing this file');
    }
    else {
        echo "$ret bytes written to file";
    }
}
else {
   die('no post data to process');
}
?>
PHP HTML 表单 变量

评论

0赞 Kevin 10/16/2014
你可以使用 sesssions
0赞 Lori 10/16/2014
是的,会话是个好主意,我只是想让它变得非常简单,因为我正在用 PHP 重建我的经典 ASP 站点......PHP对我来说是新的。

答:

0赞 Kevin 10/16/2014 #1

或者,您也可以利用会话,如果未使用相同的生成器设置文件名,则设置文件名,以便下次提交后可以再次使用它。

简单示例:

session_start();

if(!isset($_SESSION['file'])) {
    $_SESSION['file'] = round(10*microtime(TRUE)); // set a filename on initial load
}

if(isset($_POST['submit'])) { // if submitted
    $myDate = $_SESSION['file'];

    $filename = "tmp/".$myDate.".txt";

    if(isset($_POST['field1'], $_POST['field2'])) {
        $data = $_POST['field1'] . '-' . $_POST['field2'] . "\n";
        $ret = file_put_contents($filename, $data, FILE_APPEND | LOCK_EX);
        if($ret === false) {
            die('There was an error writing this file');
        }
        else {
            echo "$ret bytes written to file";
        }
    }
    else {
       die('no post data to process');
    }
}

if(isset($_POST['create'])) {
    $_SESSION['file'] = round(10*microtime(TRUE)); // creates another filename
}

?>


<form action="" method="POST">
    <input name="field1" type="text" />
    <input name="field2" type="text" />
    <input type="submit" name="submit" value="Save Data" />
    <input type="submit" name="create" value="Create New" />
</form>

评论

0赞 Lori 10/16/2014
这真是太好了。我想我可以用它。我可能会从另一个页面创建 txt 文件,然后单击以获取表单,并且在实际表单上只有一个按钮。非常感谢您提供这样的开端!
0赞 Lori 10/16/2014
你不知道这为我节省了多少时间。我非常感谢。在接下来的几天里,我可能需要更多的指导,因为PHP不是我的母语,所以希望我能得到更多很好的解决方案。
0赞 Kevin 10/16/2014
@Lori确定没有问题,如果时间允许,我会回复