依據『讓PHP代碼執行PHP代碼』(http://hi.baidu.com/see7di/blog/item/e216c73f6b2803cb7c1e7100.html)該文當中所提到的思路,究竟可以幹什麼呢?

例如︰
可以在開發CMS的時候自定義標籤,將標籤的內容PHP代碼存放到數據庫內,在生成頁面的時候將存放到數據庫內的PHP代碼讀出,然後用該思路執行並獲取執行後的結果替換標籤。
另外也可以將該思路延伸,用以作為網站線上程式編輯器來用,可以實現下線編輯,可以編譯執行的php、asp、jsp…等任何文本檔案;也可以作為線上數據庫管理工具來用,只要填寫對數據庫操作的PHP代碼即可操作管理數據庫。
最後,嘿嘿,如果在一個駭客的手中,這段代碼究竟能做出什麼?那就不是我該想的了。

用法︰
直接將如下代碼儲存為PHP檔案,放入PHP運作環境中即可使用,在使用時在輸入框內填寫PHP代碼,然後點擊『提交』按鈕,即可馬上將您剛剛輸入的PHP代碼的執行結果回饋出來。





/*
標籤解析引擎
作用:將傳入的PHP代碼進行編譯執行
返回:執行之後的結果
示例:Exe("echo \"a\";");*/
Function Exe($Str){
OB_start();
IF(Empty($Str) Or !IsSet($Str)){Return Null;}
//$Str=Str_Replace(Chr(92).Chr(92).Chr(34),Chr(14),$Str); //Chr(34)雙引號
//$Str=Str_Replace(Chr(92).Chr(92).Chr(39),Chr(19),$Str); //Chr(39)單引號
$Str=Str_Replace(Chr(92).Chr(92),Chr(14),$Str); //Chr(34)雙引號
$Str=Str_Replace(Chr(92),"",$Str);    //替換掉\
$Str=Str_Replace(Chr(14),Chr(92),$Str);
//$Str=Str_Replace(Chr(14),Chr(92).Chr(34),$Str);
//$Str=Str_Replace(Chr(19),Chr(92).Chr(39),$Str);
Eval($Str); //解析執行
$Str=ob_get_contents();   //得到緩沖區內容
OB_end_clean();     //結束並清理緩沖
Return $Str;     //返回處理結果
}
IF($_GET["action"]=="submit"){
$b=$_POST["code"];
$f=Exe($b);
Print_r ($f).Chr(10);
}?>

創作者介紹
創作者 逗號 的頭像
逗號

電腦軟體討論交流區

逗號 發表在 痞客邦 留言(0) 人氣()