PHP:如何在这里使用参数


PHP: How to use params here?

我正在制作一个函数,以便我可以使用一个通用函数从Ajax发布,我只是传递参数,以避免必须为每个Ajax函数创建一个php文件。

这是我的函数现在在PHP端接收后的样子,通过post,你可以在代码中看到参数:

$class_name = $_POST['class_name'];
$function_name = $_POST['function_name'];
$params = "'" . implode("','", $_POST['params']) . "'";
$model = new $class_name();
//Apply the function
echo $model->$function_name($params);

它正在工作,除了从部分参数…PHP将其解释为一个参数,我该怎么做才能使$params不被解释为单个字符串?

第三行实际上使 $params成为包含所有参数的单个字符串。

根据您的框架(以及您如何在Ajax中传递参数),您可能能够将$_POST['params']原样传递给方法,而不是传递$params。在这种情况下,您根本不需要构建字符串。

如果你需要调用一个希望参数单独传递的函数,而不是像那样在数组中传递,请尝试

call_user_func_array(array($model, $function_name), $params)

如果$params包含1,2,3,且$function_name为'foo',则上述表达式等价于$model->foo(1, 2, 3)

注意,这将允许人们调用脚本可用的任何类的任何公共方法。你需要某种访问控制来防止人们随意操作。正如在你的问题的评论中所建议的那样,某种类型的白名单(即使它只是一个成员变量,表明类是否意味着由这样的随机代码使用)将大大有助于防止安全问题。

不要破坏它们。将它们作为数组传递,就像$_POST一样。

echo $model->$function_name($_POST['params']);