繁体   English   中英

处理PHP中的Ajax请求的最佳方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM