gpt4 book ai didi

php - 将数据从 js 发送到 php、php 到 mysql 以及 REST json 响应时所需的正确编码/转义/htmlentities 是什么

转载 作者:可可西里 更新时间:2023-11-01 07:31:29 24 4
gpt4 key购买 nike

这是我经常遇到的事情,我通常最终会求助于尝试再试一次的方法,直到数据有效。我想 SO 会知道为了维护数据而不是弄乱 json 的最佳实践是什么。

假设我要发送的数据是最烦人的文本数据 - 特殊字符 &、<,"、\n、\n\r、\t、+ 等。

我们还假设我想将所有内容都保留在 utf8 中,并且我的 mysql 表配置为 utf8。但是,由于缺少 PHP 的 utf8 支持,因此应考虑这一点。

我应该使用什么编码/转义/htmlentities:

1) 通过 AJAX POST 将 JSON 数据从客户端 JS 发送到 PHP(GET 有什么不同吗?)

2) 在PHP中解码数据并将文本字符串存储在mysql数据库中(或存储转义/编码数据?)

3) 在 PHP 中从 MySQL 数据库中检索数据并以 JSON 响应的形式返回给 JS AJAX 请求

4) 在来 self 们的 REST api 的 JSON 响应中

最佳答案

每当我使用 php/mysql/jquery 来回传递数据时,我最终都会使用以下编码/转义组合,它似乎对我来说效果很好。

1) 你不需要在这里做任何事情,除非你发送一个 URL(我认为这只适用于 GET 请求)——但是如果你发送一个 url,你需要使用 encodeURIComponent(url),它将正确转义 url 中的 & 和特殊字符(参见更多 here )。

2) 使用 mysqli 和绑定(bind)参数,它将为您完成所有转义(阅读 here)

3) 在将数据回显到 HTML 文件中时,我总是使用它:

<?php
htmlspecialchars($string_to_escape, ENT_QUOTES, 'UTF-8', false);
?>

这将正确编码所有特殊字符(false 表示“无双重编码”)。还要确保在 html 页面顶部使用正确的 UTF-8 元标记。

4) 使用 json_encode 应该总是正确地转义你的数据,但我会使用 #3 中的代码来确保。但您可能只在返回包含特殊字符的数据时才需要它。

关于php - 将数据从 js 发送到 php、php 到 mysql 以及 REST json 响应时所需的正确编码/转义/htmlentities 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6759480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com