2012-03-12 52 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手冊中關於該功能的第一個(當前僅)示例(如上鍊接)以瞭解如何手動執行該功能。

我用這種方法看到的唯一問題是您可能必須在您要求的每個文件中都有該代碼。

相關問題