PHP将文件从输入写入txt

PHP将文件从输入写入txt,php,Php,我在这个网站上搜索过答案,但没有找到 我有一个表单,我想把输入的内容写入一个txt文件。为了简化,我只写了一个简单的表单和一个脚本,但它总是给我一个空白页。这是我得到的 <html> <head> <title></title> </head> <body> <form> <form action="myprocessingscript.php" method="post"&

我在这个网站上搜索过答案,但没有找到

我有一个表单,我想把输入的内容写入一个txt文件。为了简化,我只写了一个简单的表单和一个脚本,但它总是给我一个空白页。这是我得到的

<html>
<head>
    <title></title>
</head>
<body>
    <form>
        <form action="myprocessingscript.php" method="post">
        <input name="field1" type="text" />
        <input name="field2" type="text" />
        <input type="submit" name="submit" value="Save Data">
    </form>
    <a href='data.txt'>Text file</a>
</body>

这是我的PHP文件

<?php
$txt = "data.txt"; 
$fh = fopen($txt, 'w+'); 
if (isset($_POST['field1']) && isset($_POST['field2'])) { // check if both fields are set
   $txt=$_POST['field1'].' - '.$_POST['field2']; 
   file_put_contents('data.txt',$txt."\n",FILE_APPEND); // log to data.txt 
   exit();
}
    fwrite($fh,$txt); // Write information to the file
    fclose($fh); // Close the file
    ?>

您遇到的问题是因为您有额外的
,您的数据进入
GET
方法,并且您使用
POST
PHP
中访问数据

<body>
<!--<form>-->
    <form action="myprocessingscript.php" method="POST">

可能的解决方案:

<?php
$txt = "data.txt"; 
if (isset($_POST['field1']) && isset($_POST['field2'])) { // check if both fields are set
    $fh = fopen($txt, 'a'); 
    $txt=$_POST['field1'].' - '.$_POST['field2']; 
    fwrite($fh,$txt); // Write information to the file
    fclose($fh); // Close the file
}
?>


您在关闭de文件之前关闭了脚本。

如果您使用文件内容,则不需要执行fopen->fwrite->fclose,文件内容将为您完成所有这些操作。您还应该检查Web服务器在您试图写入“data.txt”文件的目录中是否具有写入权限


根据您的PHP版本(如果是旧版本),您可能没有file\u get/put\u contents函数。检查您的Web服务器日志,查看在执行脚本时是否出现任何错误。

使用而不是文件内容()


还有PHP

<?php
if(isset($_POST['field1']) && isset($_POST['field2'])) {
    $data = $_POST['field1'] . '-' . $_POST['field2'] . "\r\n";
    $ret = file_put_contents('/tmp/mydata.txt', $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');
}

myprocessingscript.php
是否产生任何进一步的输出?如果你的第二个代码片段是整个PHP脚本,那么你应该得到一个空白页,因为你没有生成任何输出。同样,你得到一个空白页是正常的,你没有
echo()
向客户端发送任何内容。我注意到,如果我在服务器上用admin运行它,它会起作用,如何更改权限?如果您的Web服务器是apache,例如:
chown-R apache:apache dir\u您在何处创建\u文件
我将其更改回'data.txt',但它的其余部分在共享主机上,您无权访问/tmp,您将mydata.txt放在何处?我的目录结构是~/www root/非常感谢你在这里花费的时间,弗洛比。这是一个非常优雅的解决方案,它使我能够抛弃第三方表单处理器(如WordPress插件)所需的大量脚本
<?php
if(isset($_POST['field1']) && isset($_POST['field2'])) {
    $data = $_POST['field1'] . '-' . $_POST['field2'] . "\r\n";
    $ret = file_put_contents('/tmp/mydata.txt', $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');
}