简体   繁体   English

使用 PHP 将 textarea 的内容保存到 .txt 文件

[英]save content of a textarea to .txt file using PHP

I have a code which should save content from a text area as a text file using PHP, File is getting created if I click the button, but no data is written inside that.我有一个代码,它应该使用 PHP 将文本区域中的内容保存为文本文件,如果我单击按钮,则会创建文件,但其中没有写入数据。

Code:代码:

           <form  method="POST" action="">
              <div data-label="Index.php" class="demo-code-preview" contentEditable="true">
                          <pre><code class="language-html">
                              <textarea name="content">
                            <?php
                              $file = "index.php";
                              echo(htmlspecialchars(file_get_contents($file)));
                              ?>
                            </textarea>
                          </code></pre>
              </div>
            </a>
              <a href="?SubmitFile=true" class="bar-anchor" name="SaveFile">
               <span>Save</span>
            <div class="transition-bar"></div>
            </a>
          </form>



<?php
if (isset($_GET['SubmitFile'])){
    $content = $_POST['content'];
    echo "<script>console.log('" . $content . "' );</script>";
    $file = "myfile.txt"; // cannot be an online resource
    $Saved_File = fopen($file, 'a+');
    fwrite($Saved_File, $content);
    fclose($Saved_File);
  }
?>

You are not actually submitting the form, you are only passing the SubmitFile parameter as a GET parameter when you click the link.您实际上并未提交表单,只是在单击链接时将 SubmitFile 参数作为 GET 参数传递。 The easiest thing to do is replace the link with a submit button, and change your PHP to look for that parameter in the POST.最简单的方法是用提交按钮替换链接,然后更改 PHP 以在 POST 中查找该参数。

If you really need to use a link to submit the form, you will need to employ some javascript to cancel the default event on the link and submit the form.如果您确实需要使用链接来提交表单,则需要使用一些 javascript 来取消链接上的默认事件并提交表单。 In that case, you will need to add the SubmitFile parameter as a hidden field.在这种情况下,您需要将 SubmitFile 参数添加为隐藏字段。

<form method="POST" action="">
    <div data-label="Index.php" class="demo-code-preview" contentEditable="true">
          <pre><code class="language-html">
              <textarea name="content">
            <?php
            $file = "index.php";
            echo(htmlspecialchars(file_get_contents($file)));
            ?>
            </textarea>
          </code></pre>
    </div>
    <!-- 
    This does not submit the form, it only makes a get request with the SubmitFile parameter.
    You need ot submit the form and send the SubmitFile in the post, or add the SubmitFile
    parameter to the form action if you really want to see it in the GET params.
       
    <a href="?SubmitFile=true" class="bar-anchor" name="SaveFile"><span>Save</span></a>
    -->
    <button type="submit" name="SubmitFile">Save</button>
</form>


<?php
/*
 * This will be true if the parameter is in the GET, but does not guarantee that
 * the form was posted, so you cannot rely on this as a GET parameter.
 * Change it to POST in the markup and here.
 * 
 * if (isset($_GET['SubmitFile']))
 */
if (isset($_POST['SubmitFile']))
{
    $content = $_POST['content'];
    echo "<script>console.log('" . $content . "' );</script>";
    $file       = "myfile.txt"; // cannot be an online resource
    $Saved_File = fopen($file, 'a+');
    fwrite($Saved_File, $content);
    fclose($Saved_File);
}
?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM