这是通过javascript调用php函数的好方法吗?
我的POST数据如下:
{
0: [
{
"name": "function",
"value": "toggle_user_status"
}
],
1: [
{
"name": "user_id",
"value": "1"
}
],
...
...
}
我的Ajax类看起来像这样:
<?php
class Ajax
{
public function handleAjax() {
$load_function = $_POST['function'];
return call_user_func(array($this,$load_function));
}
private function toggle_user_status() {
return '555nase';
}
}
我知道$ _POST var不安全,但这不是重点。我想知道这是否是一种调用函数的好方法......?
PS:网址http://local.yolo/admin/ajax仅接受来自登录管理员的请求
答案 0 :(得分:0)
只需检查来自js的功能。使用这样的东西:
<?php
class Ajax
{
private $_allowed_functions = array('toggle_user_status');
public function handleAjax() {
$load_function = $_POST['function'];
return in_array($load_function, $this -> _allowed_functions) ? call_user_func(array($this,$load_function)) : NULL;
}
}
答案 1 :(得分:0)
我知道您并不关心安全隐患,也不了解它们。不过,这不是一个好主意。原因是,您的JavaScript必须知道PHP实现。如果您在PHP方面改变了某些内容,则必须在JavaScript端进行更改。最好要求 PHP软件做某事,但你不关心它是如何做到的。
例如,您可以为JavaScript定义公共接口,公共接口是URL。你不关心他们如何处理任何事情,你只想获得一个跟随你定义的公共接口的响应。例如:
jQuery.post("/admin/user/toggle-status", { id: 1 });
此时URL是公共接口。
用户类处理与用户相关的事情:
<?php
interface UserInterface {
public function toggleStatus();
}
AJAX类处理AJAX调用:
<?php
class AJAX {
public function handle() {
}
}
分离关注点很重要。