(请注意,它已被用户输入,因此我无法对其进行硬编码)。无论如何,用户输入math.php?do = 2 + 2,结果脚本将返回4。另一件事是输入经过严格验证,因此没有恶意可能性。我的测试方法就是这个
function testMath($char){
$array['math'] = Array("+", "-", "/", "*", "(", ")", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
foreach($char as $chr){
if(!in_array($chr, $array['math'){
return false;
}
}
return true;
}
eval()检查的内容是否安全?或者我应该忘记用户输入的输入数学?
旁注,PHP抛出
Parse error: parse error in C:\Users\Josh\Desktop\App\html\new.php(24) : eval()'d code on line 1
当我尝试eval()时。怎么了?
答案 0 :(得分:1)
我不确定你是如何使用eval()的,因为你没有发布你的代码部分。但是如果你要评估代码,你需要指定它将保存到的变量:
修改了testMath:
function testMath($char){
if(strlen($char) > 10) return false;
$array['math'] = Array("+", "-", "/", "*", "(", ")", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9");
foreach($char as $chr){
if(!in_array($chr, $array['math'){
return false;
}
}
return true;
}
$math = $_GET['do'];
if(testMath($math)) eval("$result = " . $math . ";");
echo $math, ' = ', $result;