尝试允许管理控制面板的用户从HTML表单运行PHP if语句。
由于控制面板集成了第三方软件,我们只有一种方法可以选择数据 - 使用PHP变量。
将通过表单
发送的if语句示例$contact_details['Contacted'] == "Yes"
用户将拥有一个界面,该界面将使用完整的if语句填充HTML输入字段,例如
$contact_details['Contacted'] == "Yes" && $contact_details['Country'] == "UK"
但是,在发布表单时,if语句不会正确过滤结果。
echo $_POST["ifstatement"]."<br>"; //Show statement run - Remove when if works
if($_POST["ifstatement"]){ echo "Contact ID: ". $contact_details['id'] ." - Contact location: ". $contact_details['Country'] ." - "." Contacted?: ". $contact_details['Contacted']."<br>"
它显示应该运行的语句,但是它不运行查询。
有什么方法可以让它发挥作用,还是我必须以另一种方式做到这一点?
答案 0 :(得分:2)
您的If-Statement未被评估。您必须使用eval()
来评估它。请不要盲目地复制这个例子:
<?php
$foo = '$result = ' . $_POST["ifstatement"] . ';';
eval($foo);
if ($result) {
// ...
}
?>
但这是一个非常糟糕的Code Smell,如果你没有正确地清理输入,你就会创建一个巨大的remote code execution错误。
所以你应该重新考虑你的方法,因为会有一个更好,更安全的。