我正在制作一个小型CMS进行练习。我正在使用CKEDITOR,并试图在文本中编写类似%contactform%的内容,然后我的PHP函数将用contactform替换它。
我已经完成了用表单替换文本。但现在我需要表单的PHP代码来发送邮件。我正在使用file_get_contents();但它正在剥离php代码。
我用过include();然后从另一个文件中获取php代码,现在可以使用了。我想用一个文件来做。
那么 - 我可以从包含php代码的文件中获取所有内容吗?
* 更新*
我会尝试用另一种方式解释。
我可以在CMS中创建一个页面,我可以在其中编写标题和一些内容。在内容中,我能够写出%contactform%。
当我从数据库中获取内容时,我使用file_get_contents();将%contactform%替换为来自/inserts/contactform.php的内容。我在HTML和我的PHP代码中的表单:
if(isset($_POST['submit'])) {
echo 'Now my form is submitted!';
}
<form method="post">
<input type="text" name="email">
<input type="submit" name="submit">
</form>
现在我期待检索表单并且php代码处于活动状态。但是,如果我按下表单中的提交按钮,则不会触发php代码。
我不要显示我希望能够使用的PHP代码。
答案 0 :(得分:1)
是...
$content = file_get_contents( 'path to your file' );
用于打印尝试
echo htmlspecialchars( $content );
答案 1 :(得分:1)
我仍然需要猜测,但是根据您的更新,我认为您最终会得到一个变量,其中包含数据库中的内容,%contactform%
替换为file_get_contents('/inserts/contactform.php')
。
类似的东西:
$contentToOutput = str_replace(
'%contactform%',
file_get_contents('/inserts/contactform.php'),
$contentFromDatabase
);
如果您echo
输出该变量,它将按原样发送内容。没有php会被执行。
虽然在许多情况下风险很大,但如果你知道自己在做什么,可以使用eval来解析php代码。使用这样的混合代码,您可能希望像下面这样做。
ob_start();
eval('; ?>' . $contentToOutput);
$parsedContent = ob_get_clean();
$parsedContent
现在应该在执行代码后包含结果。您现在可以将其发送给用户或以您想要的任何方式处理它。
当然,您必须确保$contentToOutput
中的任何内容都是有效的PHP代码(或带有php标签和文本的php的有效混合)。
Here是symfony Templating / PhpEngine 类的链接。请查看evaluate
方法,以便在实际代码中查看上述示例。
答案 2 :(得分:0)
从阅读修订后的问题,我认为答案是“你不能从这里到达那里。”让我试着解释一下我认为你会遇到的事情。
首先,考虑HTTP的性质和客户端/服务器模型。客户端发出请求,服务器做出响应。每个请求都是原子的,完整的和无状态的,每个响应都是完整的,通常是瞬时的。这就是结束。服务器断开连接并返回“休眠”,直到客户端发出新请求。
假设我提出了一个网页请求。 PHP脚本运行并准备响应文档(可能是HTML),服务器将文档发送到我的浏览器。如果文档包含HTML表单,我可以将表单提交到 action = 脚本的URL。但是当我提交表单时,我正在发出一条返回服务器的新请求。
据我了解您的设计,计划是将HTML表单和PHP动作脚本放入%contactform%字符串位置的CKeditor的textarea中。这将呈现给客户端,客户端将表单提交回您的服务器,在那里运行PHP脚本。我只是觉得它不会起作用,如果你找到一种方法使它工作,你基本上会说,“我会接受外部输入并用PHP运行它。”这对我来说是一个令人无法接受的安全风险。
如果您可以退出技术细节,并以简明的语言告诉我们您要实现的目标,我们可以提供有关设计模式的建议。