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