該思路究竟可以幹什麼呢?
例如:
可以在開發CMS的時候自訂標籤,將標籤的內容PHP代碼存放到資料庫內,在產生頁面的時候將存放到資料庫內的php代碼讀出,然後用該思路執行並擷取執行後的結果替換標籤。
另外也可以將該思路延伸,用以作為網站線上程式編輯器來用,可以實現線上編輯可以編譯執行的php;asp;jsp等任何文字檔。也可以作為線上資料庫管理工具來用,只要填寫對資料庫操作的php代碼即可操作管理資料庫。最後,嘿嘿,如果在一個駭客的手中這段代碼究竟能做出什麼那就不是我該想的了。
//如果要轉載本文請註明出處,免的出現版權紛爭,我不喜歡看到那種轉載了我的作品卻不註明出處的人 Seven{See7di#Gmail.com}
用法:
直接將如下代碼儲存為php檔案,放入php運行環境中即可使用,在使用時在輸入框內填寫PHP代碼,然後點擊“提交”按鈕,即可馬上將您剛剛輸入的PHP代碼的執行結果反饋出來。
<form method="post" action="?action=submit">
<textarea rows=13 style="width:100%" name="code">
$fso=Fopen('1.php','w');
Fwrite($fso,"這是測試內容");
Fclose($fso);
For($i=14;$i<65;$i++){
echo Chr($i)."{$i}|";
}
$fengjian="馮健";
echo Chr(10).'<a href=\'http://www.7di.net\' target=\'_blank\'>官方網站地址是:www.7di.net,變數\$fengjian的值是'.$fengjian.'</a>';
echo Chr(10)."<a href=\"?action=\">返回</a>";
</textarea>
<input type="submit" value="提交">
</form>
<?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);
}?>