将从函数eval获得的值存储在php变量中
在我的名为激励的表格列中,我将值存储为字符串,例如,将从函数eval获得的值存储在php变量中,php,Php,在我的名为激励的表格列中,我将值存储为字符串,例如,”($workshop_sales*0.005),并且存储了多种类型的公式用于计算激励 我在php中使用上述代码生成了结果,但当我将其值存储在任何变量中时,它就不会被存储 如何存储其结果?是否有可能???假设: eval("echo {$row11['incentive']};"); 变体1直接保存结果(不安全): 变量2替换之前的变量(应为) 但是要小心eval(),它是邪恶的 进一步资料 eval()的主要问题是: 潜在的不安全
”($workshop_sales*0.005)
,并且存储了多种类型的公式用于计算激励
我在php中使用上述代码生成了结果,但当我将其值存储在任何变量中时,它就不会被存储
如何存储其结果?是否有可能???假设:
eval("echo {$row11['incentive']};");
- 变体1直接保存结果(不安全):
- 变量2替换之前的变量(应为)
eval()
,它是邪恶的
进一步资料
eval()的主要问题是:
潜在的不安全输入。传递不受信任的参数是失败的一种方式。确保参数(或其一部分)完全可信通常不是一项简单的任务
诡计。使用eval()可以使代码更聪明,因此更难理解。引用Brian Kernighan的话,“调试的难度是编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您就没有足够的智慧来调试它。”
假设:
eval("echo {$row11['incentive']};");
- 变体1直接保存结果(不安全):
- 变量2替换之前的变量(应为)
eval()
,它是邪恶的
进一步资料
eval()的主要问题是:
潜在的不安全输入。传递不受信任的参数是失败的一种方式。确保参数(或其一部分)完全可信通常不是一项简单的任务
诡计。使用eval()可以使代码更聪明,因此更难理解。引用Brian Kernighan的话,“调试的难度是编写代码的两倍。因此,如果您尽可能巧妙地编写代码,那么根据定义,您就没有足够的智慧来调试它。”
返回以下值,而不是在求值代码内回音:
function do_maths($expression) {
eval('$o = ' . preg_replace('/[^0-9\+\-\*\/\(\)\.]/', '', $expression) . ';');
return $o;
}
//Replace Variable with value before
$pure = str_replace("\$workshop_sales", $workshop_sales, $row11['incentive']);
//$pure is now (15*0.005)
//Interpret $pure
$foo = do_maths($pure);
echo $foo; // Outputs 0.075
返回值,而不是在求值代码内回音:
function do_maths($expression) {
eval('$o = ' . preg_replace('/[^0-9\+\-\*\/\(\)\.]/', '', $expression) . ';');
return $o;
}
//Replace Variable with value before
$pure = str_replace("\$workshop_sales", $workshop_sales, $row11['incentive']);
//$pure is now (15*0.005)
//Interpret $pure
$foo = do_maths($pure);
echo $foo; // Outputs 0.075
只需将变量分配给eval
函数中的新值即可
稍后再使用变量
例如:
<?php
$workshop_sales = rand(1000, 9999);
$row11['incentive'] = '($workshop_sales*0.005)';
$result = eval("return {$row11['incentive']};");
var_dump($result);
这将打印出$result
变量的值
PS,
您必须了解@yoshi提到的使用eval的危险性,只需将变量分配给eval
函数中的新值即可
稍后再使用变量
例如:
<?php
$workshop_sales = rand(1000, 9999);
$row11['incentive'] = '($workshop_sales*0.005)';
$result = eval("return {$row11['incentive']};");
var_dump($result);
这将打印出$result
变量的值
PS,
你必须看看@yoshi提到的使用eval的危险性小心,eval()是邪恶的!同意,始终检查您正在评估的内容。在您的情况下,您可以使用return
而不是echo
。它将返回计算值,您可以将其分配给变量<代码>$foo=eval(“返回{$row11['incentive']};”代码>可怕的编程。不要使用eval。如果需要计算值,请使用函数并返回结果。小心,eval()是邪恶的!同意,始终检查您正在评估的内容。在您的情况下,您可以使用return
而不是echo
。它将返回计算值,您可以将其分配给变量<代码>$foo=eval(“返回{$row11['incentive']};”代码>可怕的编程。不要使用eval。如果您需要计算一个值,请使用函数并返回结果。非常感谢。那就是我要找的东西。非常感谢。那就是我一直在寻找的东西。