2012-03-12 100 views
0

爲什麼下面的代碼顯示來自msg.php的php代碼?在網站上查看PHP代碼?

$flag = file('msg.php'); 
$content = ""; 
foreach ($flag as $value) { 
    $content .= $value; 
} 
echo $content; 

有沒有辦法阻止它顯示PHP代碼?

+6

你想完成什麼? – Cfreak 2012-03-12 21:29:00

回答

4

您將其輸出爲文本echo並用file讀取它們,兩者都不會執行任何PHP。您的示例可以替換爲:

require 'msg.php'; 

並且一切都將正常工作。

+0

@zerkms:不可以。文件中可能存在語法錯誤,該錯誤是通過CLi和重定向的STDERR執行的,該錯誤會在接收到突變並抹掉99%人口的輸出時創建病毒。 – Ryan 2012-03-12 21:30:38

+0

那麼,除了所有那些(我們不知道),至少'$ flag'沒有設置您之前設置的建議。 – hakre 2012-03-12 21:32:13

+0

@minitech:哦,我誤解了你的答案,「用'require'替換'file()'」,對不起 – zerkms 2012-03-12 21:32:42

0

刪除最後的echoecho在屏幕上打印內容。

-1

您可能沒有<?php ?>標籤包裝您的代碼。如果你這樣做,那麼PHP沒有安裝在你的服務器上。

1

這裏有一些事情要檢查:

  • 你有包裹在<?php ?>標籤的代碼?
  • 文件名以.php結尾嗎?

如果這兩種情況都是這樣,您的服務器可能沒有設置爲正確處理PHP。

msg.php的內容又是什麼?如果它包含php代碼,那麼可能是獲取輸出的內容,因爲您只是閱讀它,然後在沒有運行解釋器的情況下將其回顯。

1

您應該爲msg.php中的$flag指定值幷包含該文件。

include 'msg.php' 
0

如果你表示文件msg.php的內容有PHP代碼,這,這是什麼顯示,那是因爲你做的僅僅是。把PHP作爲文本。

PHP代碼被視爲文本,因爲它尚未被服務器處理。您將不得不通過查找PHP標籤的打開和關閉來過濾掉PHP,但是我懷疑您希望代碼在需要包含該文件的情況下執行。