不能说服TinyMCE在提交时保存更改


Can't persuade TinyMCE to save changes on submit

我想要一个所见即所得的html编辑器来创建一个静态网页。经过一番查找,我按照moxicode中的说明下载并安装了TinyMCE。问题是moxiecode认为的"dummy"和我认为的"dummy"之间存在很大的脱节。

我已经安装到可以浏览到配置页面并看到编辑器窗口的位置,并在编辑器窗口中键入内容。问题是,我不能实际保存代码的任何地方,它产生的东西,我可以在浏览器上查看。如有任何补充,请见好就收。

我正在编辑的文本区域看起来像这样:

<form method="post" action="../index.php">
<p>     
<textarea name="content" cols="50" rows="15">foo</textarea>
<input type="submit" value="Save" />
</p>
</form>

和'../index.php'(在站点根目录下)看起来像这样:

<?php
echo(stripslashes($_POST['content']));
?>

我希望的是,当我点击"保存"按钮时,我将能够浏览到网站的根目录,浏览器将神奇地拾取index.php,它以某种方式显示'foo'。当然,这行不通。它是如何工作的?当我点击"保存"时会发生什么,我如何在任何地方看到结果?

当我点击保存时,实际上发生的是编辑器窗口现在显示它所说的是'index.php',其中包含'foo'。我必须点击后退按钮才能回到编辑器窗口。我想这就是应该发生的事情,尽管当我在Joomla中使用TinyMCE时不会发生——当你点击保存时,你仍然会看到编辑器窗口。然而,问题是我实际上无法在任何其他浏览器窗口中看到内容。如果我浏览到网站根目录,或者明确地浏览到root/index.php,我只会看到一个空白页面。如果我在浏览器上打开两个选项卡,它们可以显示完全相同的地址(即。192.168.1.104/root/index.php),但编辑器一个显示'foo',而另一个显示空白页。

谢谢——

艾尔


编辑:Wesley的代码版本,足以使用TinyMCE作为编辑器,创建一个名为index.html的文件:

<?php
$str = <<<EOD
<html>
<head><title>Hello World</title></head>
<body>
EOD;
file_put_contents('../index.html', $str);
file_put_contents('../index.html', $_POST['content'], FILE_APPEND);
file_put_contents('../index.html', '</body></html>', FILE_APPEND);
header('Location: ../index.html');
?>

这里的基本问题是,您实际上并没有将数据保存在任何地方,您只是在发布到index.php时打印您的输入。$_POST数据仅在请求期间持续存在,不会在另一个请求期间持续存在—并且对您来说是唯一的。其他人无法看到您的帖子数据。

如果你想编辑一个网页,你需要做一些$_POST数据。您可以通过使用PHP创建或修改文件来保存它,也可以将其保存到数据库中。然后,当您想要查看页面时,您必须从数据库或文件中获取内容。你甚至可以修改和创建HTML文件,但你必须用PHP来做。

有很多方法可以做到。下面是一个非常简短的示例:将表单发送到其他地方,例如发送到一个名为edit-page.php的文件,并让该文件的内容执行如下操作:

file_put_contents('index.html', $_POST['content']);
header('Location: index.html');

这将把$_POST['content']写入一个名为index.html的文件,然后将您重定向到那里查看它(当然它不会是一个完整的文档,只有您发布的内容)。

当然你需要一个doctype, <head>,处理错误的方法等等…所以这不是你真正应该做的。这不是一个教程,只是一个希望有用的方向的提示。

底线是,您需要永久地将数据写入某个地方,然后从该源检索数据以查看它。您可以使用include s来处理部分html页面并将它们拼凑在一起,例如,如果您想在学习时进行文件写入路由。

嗯,我不确定,也许是错的,但我认为你缺乏对表单如何工作的理解,你添加了tinyMCE,这使事情变得更糟。

暂时忘掉tinyMCE,找一些关于表单一般如何工作的教程。就像@Wesley Murch说的,你需要更多的东西,我相信这个论坛的目的不是提供完整的教程。