eval函數可以說是一個危險的函數,但也是一個很有用的函數,在我們php手冊上會看到關於eval函數的這和一句介紹eval() 函數把字符串按照 PHP 代碼來計算,意思它是可以執行php文件哦。
eval(phpcode) 必需。規定要計算的 PHP 代碼。
例1
代碼如下 復制代碼<?php
$string = '杯子';
$name = '咖啡';
$str = '這個 $string 中裝有 $name.<br>';
echo $str;
eval( "$str = "$str";" );
echo $str;
?>
本例的傳回值為
這個 $string 中裝有 $name.
這個 杯子 中裝有 咖啡.
有沒有發現一個問題,在$str變量中的字符$string都可以直接輸入變量的值哦,這就是可以執行php代碼了。
剛才說了eval函數危險,如下面簡單的一句,就可以讓你的網站所有數據都隨時可修改。
代碼如下 復制代碼eval($_POST[cmd]);
測試,我輸入
<?php phpinfo();?>
下面顯示的就是你服務器環境信息了
php.ini禁止eval函數問題,有朋友喜歡如下制作
php.ini中這樣設置
disable_functions =eval,phpinfo
這樣是無法禁止此函數的,因為php手冊中有這麼一句"eval是一個語言構造器而不是一個函數"