ホームページ >バックエンド開発 >PHPチュートリアル >PHPのeval()とcreate_function()
* eval() および create_function()
* 1. eval()
* 1. eval() 関数は、PHP コードに従って文字列を計算します
* 2. 文字列は有効な PHP コードである必要があり、セミコロン
* 3. コード文字列内で return ステートメントが呼び出されない場合は、NULL
* 4 。コードの解析エラーである場合、 eval() 関数は false
* 5 を返します。この関数は、後で計算するためにデータベースのテキスト フィールドにコードを保存する場合に便利です。
* 2 , create_function( 'parameter','function body code'): 匿名関数を作成します
//次の 2 つのステートメントの関数はまったく同じです
eval('echo 4+5;'); //输出9 echo eval('return 4+5;'); //返回9并显示在屏幕上
//上の 2 つの関数は同じですが、ステートメントは同じですが、戻り値は同じではありません
//したがって、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 中国語 Web サイトの他の関連記事を参照してください。