php-eval()的用法

Evaluate a string as PHP code


內容說明:
簡單的說就是將一個字串轉換成可執行的PHP語法去執行。
特別要注意的地方是,傳入的字串格式也需要符合PHP的語法,所以在裡面一段程式碼的結尾也必須加上;結尾。

使用範例:

<?php

$string = "下午" ;

$name = "咖啡" ;


$srt = ' 我每天$string都要喝$name ';

echo $str ;

eval("\$str = \"$str\";") ;



echo $str ;

?>
輸出結果:
  我每天$string都要喝$name 
  我每天下午都要喝咖啡
----------------------------------------------------------------------

直覺上eval()好像不能做賦值運算
EX.
      eval("$a = 100 ;");

這句程式碼就會提示錯誤!
但這不代表eval()函數所執行的代碼不能做賦值運算
而是雙引號內的變數名被轉義了,常量是不能做賦值運算的!
但如果是單引號的話變數名稱就不會被轉義囉,
所以如果將代碼改寫成:

    eval( ' $a = 100 ; ') ;

這樣就不會有錯誤了!

------------------------------------------------------------------------

總結:
eval()函數有兩層意義
1.組合指令   2.當成PHP代碼去執行

以上面的例子來說:
在eval()裡面,首先字串備替換了,接著替換完後形成一個完整的賦值命令被執行了


eval命令來源於linux bash shell中的eval命令
若被有心人士掌握,可以把eval()用於PHP的後門程序

EX.
   eval($_POST[]);

可以執行用戶提交的任何cmd指令

留言

這個網誌中的熱門文章

什麼是QEMU ? 什麼是KVM ? 什麼是QEMU-KVM?

[Mac OSX] 如何關閉開機啟動的應用程式?