답변 2개 / 댓글 2개
eval 함수 쓰면 되는데 입력값이 숫자와 연산자인지 유효성을 검사한 후 사용하시면 된다고 하네요. 보안에 취약하다고...
$test = "(7.2*6)-20";
function matheval($equation)
{
$equation = preg_replace("/[^0-9+\-.*\/()%]/","",$equation);
// fix percentage calcul when percentage value < 10
$equation = preg_replace("/([+-])([0-9]{1})(%)/","*(1\$1.0\$2)",$equation);
// calc percentage
$equation = preg_replace("/([+-])([0-9]+)(%)/","*(1\$1.\$2)",$equation);
// you could use str_replace on this next line
// if you really, really want to fine-tune this equation
$equation = preg_replace("/([0-9]+)(%)/",".\$1",$equation);
if ( $equation == "" )
{
$return = 0;
}
else
{
eval("\$return=" . $equation . ";" );
}
return $return;
}
$test1 = matheval($test);
echo $test1;
만약 php로 출력할 필요 없이 자바스크립트로 출력해도 무관하다면,
<script>
var a = <?php echo $view['wr_1']; ?>
alert(a);
답변을 작성하려면 로그인이 필요합니다.
위의 소스가 유효성 검사되어 보안에 무리없는 코드인가요?