微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

403 Codeigniter 4 中的数据表禁止使用

如何解决403 Codeigniter 4 中的数据表禁止使用

我正在尝试在我的 CI4 应用程序中使用 DataTable。我需要使用服务器端处理来显示数据。我在浏览器的调试模式下收到 403 Forbidden。这是我正在使用的代码段;

我的路线

$routes->match(['get','post'],'ajaxLoadData','vendor::ajaxLoadData');

我的控制器

public function index ()
{
$data['Title']      = vendors Management Section';
$data['heading1']   = vendors Management Section';
$locale         = $this->request->getLocale();
$this->session  = \Config\Services::session();
$session        = $this->session->get();

$assignData=array"locale"=>$locale,"data"=>$data);
echo view ("dashboard/includes/header_admin",$assignData);
echo view ("dashboard/includes/navbar_admin",$assignData);                
echo view ("dashboard/mac_home",$assignData);
echo view ("dashboard/includes/footer_admin",$assignData);
}
/***********************************************************************
 Dashboard - Ajax Load vendors Data
 ***********************************************************************/
public function ajaxLoadData()
{
    // POST data
    $postData = $this->request->getPost();
    // Get data
$db = db_connect();
$ManageModel = new ManageModel($db);
$data = $ManageModel->ajaxMacaData($postData);
return $this->response->setJSON($data);
exit;
}

我的模特

function ajaxMacaData($postData=null) {
$response = array();
## Read value
$draw = $postData['draw'];
$start = $postData['start'];
$rowperpage = $postData['length']; // Rows display per page
$columnIndex = $postData['order'][0]['column']; // Column index
$columnName = $postData['columns'][$columnIndex]['data']; // Column name
$columnSortOrder = $postData['order'][0]['dir']; // asc or desc
$searchValue = $postData['search']['value']; // Search value
## Search 
$searchQuery = "";
if($searchValue != ''){
$searchQuery = " (mac_id like '%".$searchValue."%' or 
mac_prefix like '%".$searchValue."%' or 
mac_vendor like'%".$searchValue."%' ) ";
}
## Total number of records without filtering
$this->db->select('count(*) as allcount');
$records = $this->db->get('dkb_macvendors')->result();
$totalRecords = $records[0]->allcount;
## Total number of record with filtering
$this->db->select('count(*) as allcount');
if($searchQuery != '')
$this->db->where($searchQuery);
$records = $this->db->get('dkb_macvendors')->result();
$totalRecordwithFilter = $records[0]->allcount;
## Fetch records
$this->db->select('*');
if($searchQuery != '')
$this->db->where($searchQuery);
$this->db->order_by($columnName,$columnSortOrder);
$this->db->limit($rowperpage,$start);
$records = $this->db->get('dkb_macvendors')->result();
$data = array();
foreach($records as $record ){
$data[] = array( 
"mac_id"=>$record->mac_id,"mac_prefix"=>$record->mac_prefix,"mac_vendor"=>$record->mac_vendor,"mac_type"=>$record->mac_type,"mac_status"=>$record->mac_status
); 
    }
## Response
$response = array(
"draw" => intval($draw),"iTotalRecords" => $totalRecords,"iTotaldisplayRecords" => $totalRecordwithFilter,"aaData" => $data
);
return $response; 
}

我的 mac_home HTML

<div class="row">
<div class="table-responsive">
<table id="mac_dataTable" class="table table-hover">
<thead>
<tr>
<th>ID</th>        
<th>Name</th>
<th>Prefix</th>   
<th>Type</th>   
<th>Status</th>   
</tr>
</thead>
</table>    
</div>
</div>

我的 JavaScript 来初始化 DataTable 并发送 Post Ajax 请求

<script type="text/javascript">
$(document).ready(function(){
// var token = data.csrf;
// $.ajaxSetup({
//   data: csfrData
//  });
$('#mac_dataTable').DataTable({
'processing': true,'serverSide': true,'serverMethod': 'post','ajax': {
'url': '<?PHP echo base_url()."/".$locale."/dashboard/mac/ajaxLoadData"; ?>',//"dataSrc": ""
},'columns': [
{ data: 'mac_id' },{ data: 'mac_prefix' },{ data: 'mac_vendor' },{ data: 'mac_type' },{ data: 'mac_status' },]
});
});
</script>

我尝试了各种可用的解决方案,并解决了许多问题/答案。由于站点安全,我无法禁用 CRSF 或也无法更改重新生成选项。非常感谢您的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。