创建生成唯一文本文件的变量,然后追加而不创建其他文本文件

时间:2014-10-16 02:26:24

标签: php html forms variables

我有一个表单,在提交时会创建一个唯一的.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: 我不必使用microtime作为唯一的变量名称,所以如果有更好的方法,我可以改变它。

<?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');
}
?>

1 个答案:

答案 0 :(得分:0)

或者,您也可以使用会话,如果没有使用相同的生成器设置文件名,那么您可以在下次提交后再次使用它。

简单示例:

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>