2016-08-20 71 views
0

我有一個主頁做了一些驗證處理,然後在使用頭重定向完成重定向時。所有工作都很好,直到我最近更新了其中一個包含變量的變量。見下文。包括文件發送標頭,防止重定向

 <?php 
     session_start(); 
     include "globalvariables.php"; 
include "../../includes/databaseconnections/$schoolName/database_connection.php"; 

我沒有問題,直到我將$ schoolName添加到字符串。我需要這爲我們的自動複製系統(允許用戶使用不同的schoolName針對不同客戶複製的頁面和數據庫)

這裏是所包含的文件。很簡單。

<?php 
$schoolName = "fakeschoolname"; 
?> 

我不理解標題是如何被髮送的,除非$ schoolName實際上是輸出不可見的非服務器端數據。有沒有人有任何建議或想法如何補救?還是有更好的方法來動態複製和編輯頁面?

+1

你真的不想這樣做,擺在首位。除非你仔細檢查'$ schoolName'變量,然後再使用它來包含一個文件。這樣做會讓你容易受到*文件包含攻擊*的傷害。如果用戶修改變量,他們可以基本上強制你的服務器包含它不應該包含的文件。就像也許PHP文件上傳到其他地方的服務器。 – icecub

+0

那麼,有什麼更好的方式讓我在飛行中複製網站?它應該只是一個手動過程? –

+2

我正要編輯你的問題來修正代碼塊中的縮進,但如果這是它在實際代碼中的方式,那可能是問題所在。 '<?php'之前是否有空格? –

回答

1

檢查,如果你有一個名爲「../../includes/databaseconnections/fakeschoolname/database_connection.php」文件。 PHP的警告可能會導致的問題,如果該文件不存在

+0

我這樣做 - 包含在其他訪問該文件並且不重定向的頁面上的作品。它似乎是專門用於包含的文件,或者是存在變量的事實。我可以硬編碼變量,並刪除包含的文件globalvariables文件,它的工作原理。 –

+0

我不知道你正在運行什麼系統,但你可以嘗試$ {schoolName}並用「./」開始路徑。 – peter

0

我想通了這個問題,它幾乎使我瘋狂。這個問題是由於在globalVariable.php文件中關閉我的PHP標籤後兩個空行造成的。

它應該是如在我的問題,但我在IDE我有兩個額外的空格後的注意。

<?php 
$schoolName = "fakeschoolname"; 
?> 
BLANKLINE 
BLANKLINE 

我發現另一篇文章How to fix "Headers already sent" error in PHP該解釋說,PHP將只清除掉的空白一行。因爲我包含文件,並且在標題重定向之前有兩個空格。那是什麼導致它失敗。