2011-01-28 120 views
-1

是否有任何方法將表單發佈數據直接存儲到PHP文件中,而不是以文本或二進制格式存儲它?我可以將數據存儲在PHP文件中嗎?

+1

爲什麼要將基於文本的數據存儲在一個php文件中。發佈數據將是純文本不會嗎? – bharath 2011-01-28 15:44:50

+0

BTW:一個PHP文件也是純文本... – Select0r 2011-01-28 15:46:58

回答

1

這在技術上是可行的,但沒有充足的理由這樣做。你想解決什麼問題?

您可以使用fopen('file.php','a')打開一個附加的PHP文件並使用fwrite向其寫入內容。要讀取它,請閱讀整個文件,跳過PHP部分並讀取剛寫入的數據。

2

當然,你可以將它保存到你想要的任何類型的文件中。雖然把它放在一個php文件中將是一個主要的安全風險,因爲有人可以上傳一個壞的東西的腳本,然後啓動它,就像你網站上的任何其他頁面一樣。

1

如果您不想存儲數據(只能從腳本傳遞給腳本),您可以嘗試將表單存儲爲會話變量:

 
session_start(); 
$_SESSION['myData'] = $myData; 
然後所有共享會話的其他頁面都可以通過致電 $_SESSION['myData']訪問數據。

0

不在PHP文件本身。但是你可以使用這個腳本只是存儲的東西:

file_put_contents(dirname(__FILE__).'/data.txt', var_export($_REQUEST, 1), FILE_APPEND); 

如果你真的想直接存儲在PHP文件本身,只需更改腳本

file_put_contents(__FILE__, '?>'.var_export($_REQUEST, 1), FILE_APPEND); 

;-)

2

爲什麼你想通過TXT文件將數據存儲在PHP文件中?真的,如果你正在向文件系統中的文件寫入數據,那麼擴展名將是什麼並不重要。 (但是,如果您寫入PHP文件並在瀏覽器中進行訪問,則會嘗試執行文件中的任何數據,這可能會造成很大的安全問題。)

我的建議是編寫在文本文件中爲每行添加一個值。然後,當你想讀取數據時,使用PHP將該文件讀回數組。

1

是的,這是可能的。如果你想這樣做,看看像var_export這樣的功能。

然而,像其他人所說,這對於大多數意圖和目的來說是一個壞主意™。將事情寫入可執行文件意味着您必須對用戶輸入格外小心,例如,因爲他們可能會利用它來運行自己的代碼。

因此,您應儘可能使用數據庫或某種不可執行的平面文件來存儲數據。此外,如果您爲了「安全」而嘗試這樣做,即將保護性代碼放入文件中,可以通過將文件作爲文本文件讀取並跳過安全措施請記住,PHP代碼是純文本,不必執行即可讀取。如果您選擇將其作爲安全措施進行加密,則您也可以將加密數據存儲在數據庫中,從而使您的觀點沒有實際意義。

如果您發現自己無法訪問數據庫系統,則應考慮使用存儲在文件中的SQLite數據庫,因此不需要安裝任何內容,只需安裝PHP SQLite擴展,該擴展將作爲PHP的標準部分。

0

有可能是保存數據的更好的辦法,但如果你真的想這是可以做到這樣:

file_put_contents($storage_file, '<?php return ' . var_export($data) . ';'); 

這樣,所有數據都將被格式化好和良好逃脫。

然後你可以用這樣的代碼檢索數據:

$data = include $storage_file; 
相關問題