是否可以在json_encode时间内从表中隐藏真实的列名?

时间:2015-11-04 04:00:24

标签: php jquery json

我将php array编码为json格式,其中包含来自表格的数据。 我的json_encode生成的结果包含该表的实际列名。我想在column一侧使用真实的php名称,在编码为json格式之后,我希望使用其他一些自定义名称,如果某个用户签入.js文件,那对我来说就不会有任何问题。下面的代码是json_encode的结果。

现在是什么: -

{"result":[{"pals_id":"20","from_user":"hancy061","to_user":"hari061","username":"hancy061"} 

我想要的: -

{"result":[{"pid":"20","fu":"hancy061","tu":"hari061","un":"hancy061"} 

Ya,没有任何需要显示用户列名称,它似乎也不安全。你们可以看到我想要的json_encode格式,我希望它是什么。是否可以从php方面?我的意思是在将php编码为array格式之前json方面,我们可以首先制作这些列的自定义名称吗?

2 个答案:

答案 0 :(得分:3)

您无法在客户端安全地替换这些列,因为它会以某种方式提供给用户。如果您希望用户永远不知道列的实际命名方式,则应在服务器端执行此操作 最常见的方法是使用SQL别名。

在PHP中将SQL查询更改为以下内容:

SELECT pals_id AS pid, from_user AS fu, to_user AS tu, username AS un FROM YourTable ...

然而,这是一个security through obscurity,并没有提供任何安全性 如果您有SQL注入漏洞,那么黑客将能够从系统表或SELECT *查询您的数据结构。

答案 1 :(得分:1)

您也可以在编码之前以所需的格式手动设置数组键,例如:

foreach ($result as $ind => $r) {
  $result[$ind] = [ // For PHP Versions < 5.4 use 'array('
    "pid" => $r['pals_id'],
    "fu" => $r['from_user'],
    "tu" => $r['to_user'],
    "un" => $r['username'],
  ]; // For PHP Version < 5.4 use ');'
}

但是,如果要将数据从客户端发送回服务器以进行更新,则必须撤消此操作。

如果需要,则可以设置地图以在两者之间切换。