很多情況需要后台操作前端的數據,例如管理員在后台設置參數,前台顯示的參數會同步修改。
這里運用以下幾個函數及變量。
$_SERVER['DOCUMENT_ROOT'] file_put_contents strip_whitespace var_export
$_SERVER['DOCUMENT_ROOT']是PHP預定義的幾個變量之一。作用是:獲取當前運行腳本所在的文檔根目錄。該根目錄是由服務器配置文件中定義。例如apache配置文件httpd.conf中DocumentRoot配置項的值。
通過這個變量獲取相應目錄下配置文件
if (IS_POST) { $filename1 = $_SERVER['DOCUMENT_ROOT'] . '/admin/Common/Conf/config.php'; //這個是后台配置文件 $filename2 = $_SERVER['DOCUMENT_ROOT'] . '/User/Common/Conf/config.php'; //前台配置文件 file_put_contents($filename1, strip_whitespace("<?php\treturn " . var_export($_POST, true) . ";?>")); //將POST傳過來的數據寫入后台配置文件中 file_put_contents($filename2, strip_whitespace("<?php\treturn " . var_export($_POST, true) . ";?>")); //將POST傳過來的數據寫入前台配置文件中
file_put_contents() 函數把一個字符串寫入文件中。
與依次調用 fopen(),fwrite() 以及 fclose() 功能一樣。
語法 file_put_contents(file,data,mode,context)
file參數,必需。規定要寫入數據的文件。如果文件不存在,則創建一個新文件。
data參數,可選。規定要寫入文件的數據。可以是字符串、數組或數據流。 data 可以是數組(但不能是多維數組)。
mode參數,可選。規定如何打開/寫入文件。可能的值:FILE_USE_INCLUDE_PATH , FILE_APPEND ,LOCK_EX
context參數,可選。規定文件句柄的環境。context 是一套可以修改流的行為的選項。若使用 null,則忽略。
該函數將返回寫入到文件內數據的字節數。
strip_whitespace() 函數返回已刪除 PHP 注釋以及空白字符的源代碼文件。該函數對於檢測腳本中的實際代碼量很有用。
語法 strip_whitespace(filename)
filename參數,必須,規定文件名。
var_export() 輸出或返回一個變量的字符串表示。跟var_dump類似,不同的是它返回的是一個合法的代碼。
語法 var_export ($expression
,$return
)
expression 參數,必須。
在上面這個例子里,我們先用var_export()函數將傳入的POST值打印出來,然后再用strip_whitespace()函數將不需要的代碼清除,獲得需要寫入的字符串,數組,數據流。
最后利用file_put_contents()把獲得數據寫入文件中。
//例如傳入的POST數據為 a=1,b=2,c=3 //寫入后在配置文件中 <?php return array('a'=>'1','b'=>'2','c'=>3); ?>
在控制器中調用配置文件里的數據,例如用thinkphp框架中的C函數調用數據
$a=C('a'); $b=C('b'); $c=C('c'); echo $a; echo $b; echo $c;
輸出結果為
123
利用這樣修改配置文件參數,能很好的設置前后台的同步。