Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 创建生成唯一txt文件的变量,然后追加,而不创建另一个文本文件_Php_Html_Forms_Variables - Fatal编程技术网

Php 创建生成唯一txt文件的变量,然后追加,而不创建另一个文本文件

Php 创建生成唯一txt文件的变量,然后追加,而不创建另一个文本文件,php,html,forms,variables,Php,Html,Forms,Variables,我有一个表单,在提交时创建一个唯一的.txt文件名,并将表单数据发布到该文件中。这很有效。问题是在它创建文件之后,我需要一种方法来附加它,而不创建另一个文本文件。因为它是一个表单,当它提交时,每次调用submit时都会重新运行代码,我不知道如何处理它 表格如下: <body> <form action="write_to_txt_file2.php" method="POST"> <input name="field1" type="text" /> <

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

表格如下:

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

或者,您也可以利用会话来实现此目的,如果未使用相同的生成器设置文件名,则可以在下次提交后再次使用该文件名

简单的例子:

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>
session_start();
如果(!isset($\u会话['file'])){
$\u SESSION['file']=round(10*microtime(TRUE));//在初始加载时设置文件名
}
如果(isset($_POST['submit']){//if提交
$myDate=$\会话['file'];
$filename=“tmp/”$myDate..txt”;
如果(isset($_POST['field1'],$_POST['field2'])){
$data=$\u POST['field1'].-'.$\u POST['field2'.]。“\n”;
$ret=文件内容($filename,$data,file_APPEND | LOCK_EX);
如果($ret==false){
die('写入此文件时出错');
}
否则{
回显“$ret字节写入文件”;
}
}
否则{
die(“无需处理的后期数据”);
}
}
如果(isset($_POST['create'])){
$\u SESSION['file']=round(10*microtime(TRUE));//创建另一个文件名
}
?>

你可以使用sessions,sessions是个好主意,我只是想让它保持简单,因为我正在用PHP重建我的经典ASP站点……PHP对我来说是新的。这非常好。我想我可以用它。我可能会从另一个页面创建txt文件,然后单击以获取表单,并且在实际表单上只有一个按钮。非常感谢你这样的领先@Lori当然我很高兴这能帮上忙你不知道这帮我节省了多少时间。我非常感激。因为PHP不是我的母语,所以我可能在未来几天需要更多的指导,所以希望我能得到更多更好的解决方案。@Lori当然没问题,如果时间允许,我会回复的