$conditin = ' 8>0 ';
if($conditin){ $value = 1;} else { $value = 2; }
$conditin が外部から渡される
通常の条件文を実行してみてはいかがでしょうか?
$conditin= '3' が 1' より大きい場合、異常な条件文と判断します
If $conditin = ' 8>0 '; then return 1
If $conditin = ' 8
しかし、リスクを回避するにはどうすればよいでしょうか?
eval() は、実行されたコードで値が返されない限り NULL を返し、関数はその値を返します。実行されたコードに解析エラーがある場合、eval() は FALSE を返し、後続のコードは正常に実行されます。 set_error_handler() を使用して eval() の解析エラーを捕捉できません。
は次のように変更できます:
$str = '8>0';$condition = 'if(' . $str . '){$value = 1;}else{$value = 2;}';eval($condition);var_dump($value);