[英]best way to handle ajax requests in php
这是通过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:URL http://local.yolo/admin/ajax仅接受来自登录管理员的请求
只需检查来自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;
}
}
我了解您并不担心安全隐患,并且已经意识到了这些隐患。 不过,这不是一个好主意。 原因是,您的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() {
}
}
关注点分离在这里很重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.