|
|
1
11
听起来你正在将PHP代码存储在数据库中,并期望在回显时执行它。这不会发生,就PHP解释器而言,它只是文本(不是PHP代码),所以它只会回显它。 您可以使用以下命令强制PHP解释(/运行)字符串中的代码 eval() function ,但这伴随着大量的安全警告。 将代码存储在数据库中很少是正确的解决方案。 |
|
|
2
3
简单的解决方案是对您的内容运行eval()。
关闭PHP标记和打开PHP标记允许您将HTML和PHP嵌入eval()语句中。 关于存储PHP和DB与文件的选择。 假设你的目标是让PHP可以由管理员从界面编辑,并由你的服务器执行。 您有两个选择: 将PHP写入文件,并包含或执行()这些文件。 将PHP写入数据库,并执行()或将内容缓存到文件中并包含()。 如果你在专用或VPS服务器上,那么写入文件是最好的选择。 但是,如果您使用的是共享主机系统,那么写入数据库实际上是更安全的选择。然而,随之而来的任务是,您必须使用一个非常安全的系统来查询数据库,以消除所有SQL注入的可能性。 数据库在共享环境中更安全的原因是,您需要PHP进程对PHP文件的写访问权限。不幸的是,在“每个”共享主机设置中,相同的PHP用户在每个帐户上运行,因此可以对相同的PHP文件进行写访问。因此,恶意用户只需注册托管并登录到与您相同的物理机器上,或者利用不同的帐户来访问您的帐户。 通过将PHP保存在mysql中,PHP无法写入mysql文件,因为它没有权限。因此,如果你消除了SQL注入的可能性,你最终会得到更安全的代码。请注意,如果您有一个具有可写性的SQL注入漏洞,那么您也打开了一个远程代码执行漏洞。 编辑: 抱歉,正确的语法是:
这已经过相当深入的测试,可以在每个PHP配置/设置上运行。 |
|
|
3
2
您正在回显$content,它只是打印出值,但它不会在其中执行任何PHP。 |
|
|
4
1
如果您使用的是现有的CMS,如Joomla、Drupal等。
或者,也许有一个功能可以创建“对象”、“模块”,
无论他们想怎么称呼他们
,这将允许您将试图包含的代码(作为HTML)放入“对象”中,
存储在数据库中
,允许您将其包含在多个页面中。这将实现与做某事相同的目标
如果你已经建立了自己的CMS
最终,如果你使用
那么他们将能够在您的服务器上执行任何PHP代码。如果你有
|
|
|
5
0
谢谢你的帮助——简单的解决方案对我来说是最好的!也谢谢你的额外信息。遗憾的是,正如你所建议的那样,eval()在这里对我不起作用。因此,在C计划中,我决定创建一个可选的tinymce模板,该模板有一个调用contact_form页面的iframe,所有处理都发生在iframe中。这行得通。谢谢大家! |