我有一个代码,它应该使用 PHP 将文本区域中的内容保存为文本文件,如果我单击按钮,则会创建文件,但其中没有写入数据。
代码:
<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);
}
?>
您实际上并未提交表单,只是在单击链接时将 SubmitFile 参数作为 GET 参数传递。最简单的方法是用提交按钮替换链接,然后更改 PHP 以在 POST 中查找该参数。
如果您确实需要使用链接来提交表单,则需要使用一些 javascript 来取消链接上的默认事件并提交表单。在这种情况下,您需要将 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);
}
?>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句