DataTables 隐藏数据源
Posted
技术标签:
【中文标题】DataTables 隐藏数据源【英文标题】:DataTables Hide Data Source 【发布时间】:2021-12-19 01:49:55 【问题描述】:我有一个加载数据的 DataTables 表
$table.dataTable(
ajax: 'path/to/getData.php',
);
getData.php
进行一些数据库调用并返回输出数组的json_encode()
,DataTables 能够很好地解析它。
但是,如果有人要去http://mywebsite.com/path/to/getData.php,他们将能够看到所有原始 JSON 数据并可能将其抓取。
有没有办法阻止人们访问getData.php
,除非它被 dataTables 调用?
我相当肯定这必须是对 PHP 代码的修改,因为任何人都可能通过 javascript 看到我的解决方法。
【问题讨论】:
您可以通过使用 html 源数据来避免在网页中使用 Ajax。使用 PHP 构建<html>
表的内容,并从 DataTable 定义中删除 ajax
选项。可能有几种不同的方法可以做到这一点 - 但here is one。另见HTML (DOM) sourced data。最终用户一次只能访问一页数据 - 并且需要从 HTML 中抓取数据,而不是从 JSON 响应中获取所有数据。
我最初是这样做的,但我有大约 5000 行,并且 DataTables 需要一些时间来处理所有内容。进行 ajax 调用要快得多。
我喜欢你的解决方案。附带说明一下,如果您在问题中告诉我们您已经尝试过什么,这会有所帮助 - 我们不会建议您已经知道不合适的东西。
【参考方案1】:
我最终使用了$_SESSION
变量。
在包含表格的页面的开头,我设置了$_SESSION['secure'] = true;
在我的getData.php
文件中,我有:
if($_SESSION['secure'])
echo json_encode($output);
$_SESSION['secure'] = false;
重置secure
会话变量。
【讨论】:
以上是关于DataTables 隐藏数据源的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Jquery Datatables 中根据条件隐藏列?