2012-03-12 51 views
0

我正在开发一个Web应用程序,其中为用户创建了一个html页面。该页面可以包含用户放入的任何内容。我们将这些页面添加到顶部,并在输出实际html之前检查一些内容。它看起来有点像这样:停止PHP解析但输出文件的其余部分

<?php 
    require 'checksomestuff.php'; 

    // User's html below 
?> 

<html> 
    <!-- user's html --> 
</html> 

有没有办法从我require解析后停止任何PHP?我需要输出html,但是,由于用户可以添加任何他们想要的html,我不希望任何用户添加的PHP被执行。显然这将是一个安全问题。所以,我想要输出用户的html,但不能解析任何PHP。我宁愿不必将用户的HTML放入另一个文件中。

+1

如果您不希望页面包含用户创建的PHP,那么请勿允许用户输入将由页面处理的PHP代码.... – 2012-03-12 14:59:50

+0

用户将如何添加HTML? – bfavaretto 2012-03-12 15:00:53

+0

你已经完全误解了安全概念..你需要检查用户输入的漏洞,而不是显示/执行它们。 – emaillenin 2012-03-12 15:03:31

回答

1

一个明智的方法是将用户创建的内容卸载到另一个文件,然后您应该加载此文件(在您的主PHP文件中)并按原样输出 - 而不将其解析为PHP。

还有很多其他方法可以做到这一点,但如果创建另一个文件为你做这项工作,那么这可能是最好的前进方向。

UPDATE:真的要读最后一行问题!

您可以使用base64编码将html编码为变量,然后您只需打印解码后的字符串。

+0

“我宁愿不必将用户的html放到另一个文件中。”不过谢谢。 – 2012-03-12 16:04:12

+0

@MattBradley啊,对不起。添加回答另一种方式来做到这一点。 – zaf 2012-03-12 16:48:14

0

如果您没有将文件数据存储在一个php文件中,比如说一个txt或html文件,那么php将不会被评估。

或者,您可以通过file_get_contents()或其他一些不涉及评估php的方式来读取文件。

+0

“我宁愿不必将用户的html放到另一个文件中。”不过谢谢。 – 2012-03-12 16:04:00

0

虽然我还是忍不住要问为什么想这(尤其是这样)做的,它的声音对我来说,唯一的东西,可以帮助你的是特殊__halt_compiler()功能一个...

应该阻止它执行页面的其余部分,并且可能会或可能不会输出其余部分。如果没有,那么,请阅读PHP手册中关于该功能的第一个(当前仅)示例(如上链接)以了解如何手动执行该功能。

我用这种方法看到的唯一问题是您可能必须在您要求的每个文件中都有该代码。

相关问题