文本文件的简单 PHP 编辑器
Posted
技术标签:
【中文标题】文本文件的简单 PHP 编辑器【英文标题】:Simple PHP editor of text files 【发布时间】:2012-01-03 20:18:14 【问题描述】:我为客户开发了一个网站,他希望能够在后端类型的解决方案中编辑主页的一小部分。因此,作为一种解决方案,我想添加一个非常基本的编辑器(domain.com/backend/editor.php),当您访问它时,它将有一个包含代码的文本字段和一个保存按钮。它将编辑的代码将设置为 TXT 文件。
我认为这样的事情在 PHP 中很容易编写,但这次谷歌没有帮助我,所以我希望这里可能有人会为我指明正确的方向。请注意,我没有 PHP 编程经验,只有 html 和基本的 javascript,所以请在您提供的任何回复中彻底。
【问题讨论】:
此站点有数据库或您想从 TXT 文件加载? 您似乎只是在寻找 CMS?! 关于 SO 上的文件 IO 的很多问题,例如***.com/questions/737415/php-write-to-file 【参考方案1】:您创建一个 HTML 表单来编辑文本文件的内容。如果它被提交,您更新文本文件(并再次重定向到表单以防止 F5/刷新警告):
<?php
// configuration
$url = 'http://example.com/backend/editor.php';
$file = '/path/to/txt/file';
// check if form has been submitted
if (isset($_POST['text']))
// save the text contents
file_put_contents($file, $_POST['text']);
// redirect to form again
header(sprintf('Location: %s', $url));
printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
exit();
// read the textfile
$text = file_get_contents($file);
?>
<!-- HTML form -->
<form action="" method="post">
<textarea name="text"><?php echo htmlspecialchars($text) ?></textarea>
<input type="submit" />
<input type="reset" />
</form>
【讨论】:
它可以工作,但是,无论如何调整它,以便加载时txt文件的内容在那里? 文件$file
的内容应该在加载时显示。只需将一些文本放入文件中即可。
不是,我已经试过了。作为 $file 路径,我放置了“test.txt”,因为它与 php 文件位于同一文件夹中。有问题吗?
是的,这是个问题。在其中指定一个完整路径,一个完全限定的路径,而不仅仅是一个文件名。
使用 UNIX 换行符保存文件:file_put_contents($file, str_replace("\r", '', $_POST['text']));【参考方案2】:
读取文件:
<?php
$file = "pages/file.txt";
if(isset($_POST))
$postedHTML = $_POST['html']; // You want to make this more secure!
file_put_contents($file, $postedHTML);
?>
<form action="" method="post">
<?php
$content = file_get_contents($file);
echo "<textarea name='html'>" . htmlspecialchars($content) . "</textarea>";
?>
<input type="submit" value="Edit page" />
</form>
【讨论】:
你能给我更多关于如何添加它的信息吗?以及如何在其中插入文本字段并使其正常工作?正如我之前提到的,我对 PHP 非常陌生。 它可以工作,但是它在加载时不会获取 txt 文件的内容。如果没有太多要求,您可以调整代码来做到这一点吗? 很抱歉,我不明白您所说的“加载时获取 txt 文件的内容”是什么意思。【参考方案3】:您基本上是在寻找与联系表格等类似的概念。
应用教程中的相同原则,如 this one,而不是使用 mail
发送电子邮件,请查看 PHP.net 中的 file functions。
【讨论】:
【参考方案4】:你当时用什么谷歌搜索? php write file 给了我几百万次点击。
如manual 中的fwrite()
:
<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);
// the content of 'data.txt' is now 123 and not 23!
?>
但老实说,您应该首先拿起一本 PHP 书籍并开始尝试。除了您想将文本字段(我的意思是文本区域?)发布到 TXT 文件之外,您没有发布任何单一要求。这样就可以了:
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST")
$handle = fopen("home.txt", 'w') or die("Can't open file for writing.");
fwrite($fh, $_POST['textfield']);
fclose($fh);
echo "Content saved.";
else
// Print the form
?>
<form method="post">
<textarea name="textfield"></textarea>
<input type="submit" />
</form>
<?php
请注意,这完全符合您的描述。它在打印表单时不读取文件(所以每次你想编辑文本时,你必须从头开始),它不检查任何输入(你希望用户能够发布 HTML ?),它没有安全检查(每个人都可以访问它并更改文件),并且绝不会读取文件以显示在您想要的页面上。
【讨论】:
该代码是如何工作的?你能给我提供更多信息吗?我搜索了“php 编辑器”和类似内容,但大多数结果都是用于编辑 php 文件的应用程序。 @AlehandroDarie 那么你为什么在“php 编辑器”上搜索并在没有找到任何东西时停止?你想要的是写一个文件,所以搜索它。我已经更新了我的答案,但它纯粹是演示代码,决不能在生产环境中使用。【参考方案5】:首先要做的是捕获信息,最简单的方法是使用带有 TEXTAREA 的 HTML 表单:
<form method='post' action='save.php'>
<textarea name='myTextArea'></textarea>
<button type='submit'>Go</button>
</form>
在“save.php”(或任何地方)上,您可以轻松查看表单发送的信息:
<?php
echo $_POST['myTextArea']
?>
要实际创建文件,请查看 PHP 中的 fopen/fwrite 命令,另一个简单的示例:
<?php
$handle = fopen("myFile.txt","w");
fwrite($handle,$_POST['myTextArea'];
fclose($handle);
?>
警告:这是一个非常简单的答案!您可能想要保护您的表单和文件,或者做一些不同的事情.... 以上所做的就是将表单中发布的内容准确地写入文件。如果您想指定不同的文件名、覆盖、附加、检查不良内容/垃圾邮件等,那么您需要做更多的工作。
如果您有一个可公开访问的编辑器并将内容发布到网页,那么垃圾邮件保护是一项明确的要求,否则您会后悔的!
如果您对学习 PHP 不感兴趣,那么您应该考虑让专业的开发人员为您处理任何编码工作!
【讨论】:
【参考方案6】:我也有类似的需求,因此我们创建了一个名为 stringmanager.com 的客户友好型解决方案,我们在所有项目和 CMS 无效的地方使用。
从你这边,你只需要在代码中标记字符串,即来自:
echo "他要编辑的文字"; 到:
echo _t("S_Texthewantstoedit");
stringmanager.com 会负责其余的工作。您的客户可以在我们的在线应用程序中管理特定的文本区域,并在他想要的任何地方同步。差点忘了提,它是完全免费的。
【讨论】:
【参考方案7】:可以使用这行代码:
<form action="" method="post">
<textarea id="test" name="test" style="width:100%; height:50%;"><? echo "$test"; ?></textarea>
<input type="submit" value="submit">
</form>
【讨论】:
【参考方案8】:<?php
$file = "127.0.0.1/test.html";
$test = file_get_contents('1.jpg', 'a');
if (isset($_POST['test']))
file_put_contents($file, $_POST["test"]);
;
?>
<form action="" method="post">
<textarea id="test" name="test" style="width:100%; height:50%;"><? echo "$test"; ?></textarea>
<input type="submit" value="submit">
</form>
还没来得及完成它,最简单的可能,如果需要会添加更多。
【讨论】:
以上是关于文本文件的简单 PHP 编辑器的主要内容,如果未能解决你的问题,请参考以下文章