首頁  >  文章  >  後端開發  >  php中的eval()與create_function()

php中的eval()與create_function()

无忌哥哥
无忌哥哥原創
2018-06-28 14:56:287016瀏覽

 * eval()與create_function()

 * 一、eval()

 * 1.eval()函數把字串依照PHP 程式碼來計算

# * 2.該字串必須是合法的PHP 程式碼,且必須以分號結尾

 * 3.如果沒有在程式碼字串中呼叫return 語句,則傳回NULL

 * 4 .如果程式碼中存在解析錯誤,則eval() 函數傳回false

 * 5.該函數對於在資料庫文字欄位中供日後計算而進行的程式碼儲存很有用

# * 二、create_function('參數','函數體程式碼'):建立匿名函數

//以下二條語句功能完全一樣

eval('echo 4+5;');  //输出9
echo eval('return 4+5;'); //返回9并显示在屏幕上

//儘管上面二條語句功能一樣,但傳回值不相同

//所以,如果想要引用eval()回傳值,必須在語句字串中使用return

var_dump(eval('echo 4+5;')); //返回 NULL
var_dump(eval('return 4+5;')); //返回 9

//eval()注入攻擊演示

isset($_GET['p']) ? eval($_GET['p']) : null;

//現在在url後面加上?p=phpinfo(); 或其它php合法語句,會直接執行,注入成功

//你可以加入你的廣告,你的跳轉地址等,達到惡意攻擊的目的

//用create_functoin()建立匿名函數

//因為函數已被棄用,部分編輯器會給予警告,多說無益

#//知道這個函數曾經來過這個世界就夠了

$func1 = create_function('$a,$b', 'return ($a+$b);');
echo $func1(10,20);

以上是php中的eval()與create_function()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn