簡體   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