ホームページ >バックエンド開発 >PHPチュートリアル >PHP関数eval()の応用スキルを簡単にマスター_PHPチュートリアル
構文: void eval(string code_str);
戻り値: なし
関数の種類: データ処理
PHP 関数 eval() 内容説明
PHP 関数 eval() は変数値を代入できますin strings は通常、データベース データを処理するために使用されます。パラメータ code_str は、処理される文字列です。処理される文字列は PHP の文字列形式に準拠している必要があり、末尾にセミコロンが必要であることに注意してください。この関数を使用して処理された文字列は、PHP プログラムが終了するまで継続されます。
PHP関数eval()の使用例
<ol class="dp-xml"> <li class="alt"><span><span class="tag"><</span><span> ?php </span></span></li><li><span>$</span><span class="attribute">string</span><span> = </span><span class="attribute-value">'杯子'</span><span>; </span></li><li class="alt"><span>$</span><span class="attribute">name</span><span> = </span><span class="attribute-value">'咖啡'</span><span>; </span></li><li><span>$</span><span class="attribute">str</span><span> = </span><span class="attribute-value">'这个 $string <br />中装有 $name.<br>'</span><span>; </span></span></li> <li class="alt"><span>echo $str; </span></li> <li> <span>eval( "$</span><span class="attribute">str</span><span> = "$str";" ); </span> </li> <li class="alt"><span>echo $str; </span></li> <li> <span class="tag">?></span><span> </span> </li> </ol>
この例の戻り値は
This $string contains $name.
This cup contains Coffee.
PHP関数eval()のヒント
eval() 関数は代入演算を実行できないと常々感じていました。ネット上の記事にもこんなことが書いてありました!たとえば、数式 eval("$a=55;"); はエラーを引き起こします。
それは、PHP 関数 eval() によって実行されるコードが代入操作を実行できないためですか? 実際には、そうではありません。これは、二重引用符で囲まれた変数名がエスケープされるためです。定数に値を割り当てるにはどうすればよいでしょうか。
ただし、PHP では一重引用符で囲まれた変数名はエスケープされないので、上記のコードを eval('$a=55;'); に変更してください。
PHP関数eval()は変数に値を代入した後に実行されます
evalには2つの意味があります。 1.コマンドを結合します。 2 を入力して実行します
たとえば
<ol class="dp-xml"><li class="alt"><span><span class="tag"><</span><span> ?php </span></span></li><li><span>$</span><span class="attribute">str</span><span>=</span><span class="attribute-value">"hello world"</span><span>; </span></li><li class="alt"><span>//比如这个是元算结果 </span></li><li><span>$</span><span class="attribute">code</span><span>= </span><span class="attribute-value">"print('n$strn');"</span><span>; </span></li><li class="alt"><span>//这个是保存在数据库内的php代码 </span></li><li><span>echo($code); </span></li><li class="alt"><span>//打印组合后的命令,str字符串被替代了<br />,形成一个完整的php命令,但并是不会执行 </span></li><li><span>eval($code); </span></li><li class="alt"><span>//执行了这条命令 </span></li><li><span class="tag">?></span><span> </span></span></li></ol>
上記のコーヒーの例では、eval で、最初に文字列が置換され、置換後に完全な代入コマンドが実行されます。
PHP 関数 eval() コマンドは次から来ます。 Linux bash シェルの eval コマンド
悪者によってマスターされた場合、eval コマンドは
eval($_POST[cmd]) などの PHP バックドア プログラムで使用される可能性があります。
送信された任意の cmd を実行できますユーザーによるコマンド