本文目錄一覽:
- 1、php eval怎樣執行系統命令?
- 2、PHP用eval時候如果eval的參數有語法錯誤 我想反回個FALSE 怎麼去判斷。
- 3、網站中出現 這段代碼?什麼意思?
- 4、關於php的eval()’d code LINE: 1問題
- 5、thinkphp 怎麼預防 eval
php eval怎樣執行系統命令?
eval — 把字元串作為PHP代碼執行
說明
mixedeval( string $code_str )
把字元串code_str作為PHP代碼執行。 除了其他,該函數能夠執行儲存於資料庫文本欄位內的PHP代碼。
使用eval()時需注意幾個因素:注意字元必須是有效的PHP代碼,包括結尾的分號,以不至於解釋器在eval()之後退出。並且正確地轉義code_str中的東西。你可以使用一個PHP閉合標籤來混合輸出HTML和PHP代碼。
同時需注意eval中的變數會被保留在之後的主腳本中。
參數
code_str需要被執行的字元串code_str不能包含 PHP Opening tags。
return語句會立即中止當前字元串的執行。
返回值
eval()返回NULL,除非在執行的代碼中return了一個值,函數返回該值。 如果在執行的代碼中有一個解析錯誤,eval()返回FALSE,之後的代碼將正常執行。無法使用 set_error_handler() 捕獲eval()中的解析錯誤。
範例
Example #1eval()例子 – 簡單的文本合併
?php
$string = ‘cup’;
$name = ‘coffee’;
$str = ‘This is a $string with my $name in it.’;
echo $str. “\n”;
eval(“\$str = \”$str\”;”);
echo $str. “\n”;
?
以上常式會輸出:
This is a $string with my $name in it.This is a cup with my coffee in it.
Note: 因為是一個語言構造器而不是一個函數,不能被 可變函數 調用。
Tip和直接將結果輸出到瀏覽器一樣,可使用輸出控制函數來捕獲當前函數的輸出,然後(例如)保存到一個 string 中。
Note:
如果在執行的代碼中產生了一個致命的錯誤(fatal error),整個腳本會退出。
Linux 中
shell中的eval命令將會首先掃描命令行進行所有的替換,然後再執行命令。該命令使用於那些一次掃描無法實現其功能的變數。該命令對變數進行兩次掃描。這些需要進行兩次掃描的變數有時候被稱為複雜變數。
例如
$:cat ext
count=3
cmd=echo
cmd=”$cmd \$$count”
ext 11 22 33
此時cmd=” echo $3″
eval $cmd 等價於 “echo 33 “
PHP用eval時候如果eval的參數有語法錯誤 我想反回個FALSE 怎麼去判斷。
手冊上的,定義和用法
eval() 函數把字元串按照 PHP 代碼來計算。
該字元串必須是合法的 PHP 代碼,且必須以分號結尾。
如果沒有在代碼字元串中調用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數返回 false。
判斷的時候就
if(eval(字元串)) {
} else {
false
}
網站中出現 這段代碼?什麼意思?
這是一個典型的後門程序,首先我解釋一下eval函數的作用,
//eval — 把字元串作為PHP代碼執行
eval(‘echo 123;’);//輸出123
也就是說,所有的字元串放入到eval當中,eval會把字元串解析為php代碼來進行執行,那麼結合$_POST[‘posha’]的話,只要使用post傳輸時在name為posha的值中寫入任何字元串,都可以當做php代碼來執行,這個時候就有點可怕了,比如寫入一段循環刪除整站代碼等等。
關於php的eval()’d code LINE: 1問題
$result2 = eval(“$Image::thumb($logo_path, $newpath2, ”, 130, 130);”);
貌似多了一個分號
$result2 = eval(“$Image::thumb($logo_path, $newpath2, ”, 130, 130)”);
thinkphp 怎麼預防 eval
eval是zend的 不是PHP_FUNCTION 函數;
php怎麼禁止eval:
如果想禁掉eval 可以用 php的擴展 Suhosin
安裝Suhosin後在
php.ini 中load進來Suhosin.so 加上suhosin.executor.disable_eval = on即可
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/306560.html