㈠ 關於php的eval()'d code LINE: 1問題
$result2=eval("$Image::thumb($logo_path,$newpath2,'',130,130);");
貌似多了一個分號
$result2=eval("$Image::thumb($logo_path,$newpath2,'',130,130)");
㈡ 前端和PHP交互用eval轉換時一直報'<'的錯是什麼原因
跟這個無關,你好好查下你的代碼,<這個符號是不是哪裡少了。
㈢ php eval 的問題
$buffer 字元串作為php語句執行
如$buffer 內容有 "$title='這是標題';"
執行後 eval($buffer);
就會在當前作用域內有變數$title並且值為「這是標題」
通常在更新配置文件時使用
㈣ 網站中出現<php eval($_POST['posha']);> 這段代碼什麼意思
這是一個典型的後門程序,首先我解釋一下eval函數的作用,
//eval—把字元串作為PHP代碼執行
eval('echo123;');//輸出123
也就是說,所有的字元串放入到eval當中,eval會把字元串解析為php代碼來進行執行,那麼結合$_POST['posha']的話,只要使用post傳輸時在name為posha的值中寫入任何字元串,都可以當做php代碼來執行,這個時候就有點可怕了,比如寫入一段循環刪除整站代碼等等。
㈤ 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和echo一樣並不是函數,不能使用變數函數的方法調用比如:$func = 『eval』$func()這樣的調用就是無效的。它會提示沒有eval函數,如果你自己定義這么一個函數也是有問
錯誤抑制符去掉錯誤信息,eval和echo一樣並不是函數,不能使用變數函數的方法調用比如:
$func = 『eval』
$func()這樣的調用就是無效的。它會提示沒有eval函數,如果你自己定義這么一個函數也是有問題的。因為eval是一個關鍵字。
eval調用和include差不多,如果被包含文件中沒有明確return就返回null。如果直接eval我們需要檢查的文件會造成被檢查的文件內代碼被執行,這可不是我們想要的,我們只需要檢查一下這個文件的語法是否正確。 我們可以在要檢查的文件之前添加return 語句,讓代碼提前跳出,那麼後面的代碼就不會執行了。好的,就這么干。代碼如下:
< ?PHP
if(!function_exists('PHP_check_syntax')) {
function PHP_check_syntax($file_name,
&$error_message = null) {
$file_content = file_get_contents($file_name);
$check_code = "return true; ?>";
$file_content = $check_code .
$file_content . "< ?PHP ";
if(!@eval($file_content)) {
$error_message = "file: " .
realpath($file_name) . " have syntax error";
return false;
}
return true;
}
}
if(!PHP_check_syntax("file.PHP", $msg)) {
echo $msg;
}
else {
echo "Woohoo, OK!";
}
< ?PHP
foreach:: a => b
?>
因為Parse error 是沒法被 set_error_handler處理函數處理的。這個異常沒辦法catch到。所以才使用了@來抑制錯誤。這帶來的問題就是我們無法得到詳細的錯誤信息。 不過目前我需要的功能也只是檢查語法是否正確。不正確的話重新編譯模板文件,就這么簡單,至於語法錯誤,在顯示網頁的時候自然會看得到。
PHP檢查語法錯誤最好的辦法就是這個被遺棄的PHP_check_syntax這個方法回到PHP中。下次再研究下他們是出於什麼原因把這個函數去掉的。
㈦ 求PHP中eval()函數的使用方法
eval() 函數把字元串按照 PHP 代碼來計算。
該字元串必須是合法的 PHP 代碼,且必須以分號結尾。
如果沒有在代碼字元串中調用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數返回 false。
例子:
<?php
$string = "beautiful";
$time = "winter";
$str = 'This is a $string $time morning!';
echo $str. "<br />";
eval("\$str = \"$str\";");
echo $str;
?>
輸出:
This is a $string $time morning!
This is a beautiful winter morning!
㈧ php(304) : eval()'d code on line 1,這個問題是怎麼回事
PHP最大可用內存超出了。你EVAL的時候超出了PHP.INI指定的最大內存可用大小,需要修改PHP.INI中最大可用內存的大小。
㈨ PHP用eval時候如果eval的參數有語法錯誤 我想反回個FALSE 怎麼去判斷。
手冊上的,定義和用法
eval() 函數把字元串按照 PHP 代碼來計算。
該字元串必須是合法的 PHP 代碼,且必須以分號結尾。
如果沒有在代碼字元串中調用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數返回 false。
判斷的時候就
if(eval(字元串)) {
} else {
false
}
㈩ eval()的PHP
Eval函數在PHP代碼中的使用:eval() 函數把字元串按照 PHP 代碼來計算。該字元串必須是合法的 PHP 代碼,且必須以分號結尾。如果沒有在代碼字元串中調用 return 語句,則返回 NULL。如果代碼中存在解析錯誤,則 eval() 函數返回 false。實例如圖所示。
實例:
$string = "beautifual";
$time = "winter";
$str =' This is a $string $time morning!'
echo $str. "<br />";
eval("$str = "$str";");
echo $str;