2012-07-03 30 views
0

原谅初学者的问题 - 我试图使用其他命令从SQL数据库中调用PHP命令,但是网页显示的是纯文本命令。来自SQL数据库的PHP字符串显示为纯文本

例如,我在页面上的命令是<?php echo $row_rsLeftColumn['code']; ?>,并且在SQL数据库中调用此项目:<?php echo '<p>Hello World</p>'; ?>。但是,即使我可以在源代码中看到该行,网页也不会显示“Hello World” - 因此,该行已成功从SQL数据库中提取出来,该页面仅将其视为纯文本。

当我直接将该行添加到网页中时,它按预期工作,所以麻烦似乎并不是PHP在Web服务器上配置错误;相反,当页面从SQL数据库调用它时,页面不会识别PHP,即使它直接在页面上识别它。

任何援助,你可以提供将不胜感激。

+0

我很高兴它没有....认为的安全问题,你可能有其他方式..搜索PHP命令'eval' – Rufinus

+3

几乎总是一个坏主意来存储在数据库 – 2012-07-03 20:12:22

+0

PHP不将PHP或HTML存储在数据库中 – Don

回答

0

如果您希望提取并执行数据库中的PHP代码,则需要使用eval()来运行它。

eval请小心,因为它不会对代码执行任何检查,所以如果最终用户可以输入代码,他们可以编写他们想要的任何恶意代码。如果必须,请在使用前仔细阅读eval上的文档。并且请注意,在调用eval之前,您必须从代码中移除<?php ?>标签。

+1

我会强调“...... [**不会阻止**] **恶意代码** ..”;我不信任任何*我的用户 - 允许*他们的代码*在*我的安全主管*下运行 - 并且我建议其他人也采用类似的观点。 – 2012-07-03 20:18:48

0

它以字符串形式出现在数据库中。现在你正在把它拉出来,并告诉它回声。你应该使用eval()函数。

<?php eval($row_rsLeftColumn['code']); ?> 
+0

但是,我会**不推荐/使用这种方法。通常有*更清洁的方法,并且使用这种'eval'方法,取决于数据源和安全性,可以允许注入恶意代码。 – 2012-07-03 20:22:35

+0

感谢大家的回答。我试图 - 也许误导了 - 从SQL数据库中调用HTML和PHP的组合 - 同一页面的其他区域仅调用数据库中的HTML,但这是一个需要调用PHP行的特定实例为第三方插件。 从SQL数据库里的代码是这样的:? ''

Hello World

'; ?>
我想''并收到'语法错误:语法错误,意外'<''。 再次,我感谢任何帮助。 – user1499837

0

对不起,我不能在还没有评论回复...

eval()预计PHP代码,因此,如果你的字符串与HTML开始,你将需要?>加前缀。

<?php eval('?>' . $row_rsLeftColumn['code']); ?> 
+1

现在工作正常 - 谢谢!但是我担心eval()可能导致安全问题的建议。在这部分网站中没有外部用户输入 - 它只是调用我们内部数据库提供的PHP记录。有没有比eval()更应该使用“更安全”的命令,或者这样可以吗? – user1499837

相关问题