允许在文本区域中使用PHP

允许在文本区域中使用PHP,php,Php,如何允许在textarea中使用php脚本。我知道它的安全手段的风险,但我想通过管理小组这样做,所以不担心安全。 我想在textarea中包含1个php文件,并想在显示textarea内容时执行它。 如何操作?将相应的PHP代码保存到一个新文件中,然后只需将PHP文件包含在要显示它的位置。获取要运行到字符串变量中的代码 eval($phpcode) 为什么您如此希望在那个特定的地方运行那个文件代码?难道代码不能被放入一个函数中,然后在那里调用函数吗 另外,解释一下到底发生了什么。需要运行的动态P

如何允许在textarea中使用php脚本。我知道它的安全手段的风险,但我想通过管理小组这样做,所以不担心安全。 我想在textarea中包含1个php文件,并想在显示textarea内容时执行它。
如何操作?

将相应的PHP代码保存到一个新文件中,然后只需将PHP文件包含在要显示它的位置。

获取要运行到字符串变量中的代码

eval($phpcode)

为什么您如此希望在那个特定的地方运行那个文件代码?难道代码不能被放入一个函数中,然后在那里调用函数吗

另外,解释一下到底发生了什么。需要运行的动态PHP代码是什么?对于无法控制的代码,您可以完全访问您的环境,包括存储在PHP文件中的DB和密码!如果通过一个简单的GET参数,ppl可以堆叠溢出并完全控制一个站点,那么您就可以让他们完全轻松地控制一切!不要告诉我们它在管理面板中,如果你认为这足够安全,那么安全漏洞就更大

即使有一百种可能的密码。将它们放入函数内的文件中,并为用户提供一个组合框列表,以选择要运行的组合框

如果管理员用户需要自定义一些代码,请使用插件系统


如果管理员用户确实需要运行自定义快速代码,请允许他访问您的控制面板,以便他可以直接添加和编辑文件。

您可以在服务器端使用该函数,但在使用之前需要清除php标记

<form method="post" action="server.php">
    <textarea name="text_area"></textarea>
</form>

<?php
// when display content
$pattern = "/<\?php(.*?)\?>/";
preg_match($pattern, $textarea_value, $matches);
foreach ($matches as $phpcode) {
    eval($phpcode);
}
?>

当然,不要忘记安全原因。
此代码允许在textarea中同时添加许多php代码和简单文本

我知道您想要接收在textarea中键入的文本,或者在textarea元素中运行一些代码

<?php
    $unsecurePHPcode = $POST['unsecurePHPcode'];
?>
<textarea name="unsecurePHPcode">
<?php eval($unsecurePHPcode); ?>
</textarea>


这在很多方面都是错误的。。。如果你真的想做的话。。为什么不上传文件,而不是将其粘贴到文本区域,将其复制到apache具有执行权限的目录中,chmod为700,并使用shell_exec执行它?让我解释一下我的场景。我已经建立了一个CMS,在一些新的帖子中,我需要一个动态代码(我在单独的文件中有)来在该帖子的某个位置上运行。希望你能理解,退房。聪明地使用
ReflectionClass
可以为您做到这一点,同时您还可以安全地做到这一点。虽然您说您了解风险,但我还是建议您不要这样做。别这样。即使是在“管理面板”中,也不会对风险造成太大限制。当有人试图在服务器/数据库上安装砖块时,不要抱怨。@Matt基本上,您创建了一个类,使用方法,并使用方法或属性中的文本区域中的代码动态地构建一些安全性。然后使用反射类实例化代码并运行方法。反射允许您从字符串中提取代码,并在运行时像与文档内联一样执行它。其中一个包含常规文本和占位符,您希望在其中插入PHP,然后第二个包含PHP输入。将PHP文件保存到文本文件(或数据库)中,然后在占位符处回显第一个文本区域时包含该文件。每个文件的位置不同。所以我无法修复位置显示我可以在textarea中允许此操作吗?对不起,如果我搞砸了,请让我解释一下我的情况。我有一个CMS,我想包括一个文件,它获取一些实时更新,比如说从twitter,需要包括在这里的文件只改变了GET变量。但我不能确定它的位置,我可以包括那个文件,可以包括在第一段上面,第二段下面,第二个标题之后,也不能添加。然后把它的位置放在数据库中并检索它。对于这样简单的事情,您不需要运行php代码。$textarea\u值是来自textarea的文本,您可以从数据库或其他保存位置获取它(对不起,我的英语不好:))不工作,空结果:(解析错误:解析错误在C:\wamp\www\xxxxxxxx\try.php(6):eval()'d代码的第2行