AJAX POST和加号(+)——如何编码?
P粉124070451
P粉124070451 2023-07-21 09:47:06
0
2
657

我通过AJAX发布一个表单字段的内容到PHP脚本,并使用JavaScript来转义(field_contents)。问题是任何加号都被去掉了,取而代之的是空格。我怎么能安全地“编码”加号,然后适当地“解码”它在PHP方面?

P粉124070451
P粉124070451

全部回复(2)
P粉010967136

在JavaScript中试试:

encodeURIComponent()

PHP中:

urldecode($_POST['field']);
P粉674999420

在JS和PHP中使用encodeuriccomponent(),你应该会收到正确的值。

注意:当您在PHP中访问$_GET、$_POST或$_REQUEST时,您正在检索已经解码的值。

例子:

在你的JS中:

// url encode your string
var string = encodeURIComponent('+'); // "%2B"
// send it to your server
window.location = 'http://example.com/?string='+string; // http://example.com/?string=%2B

在你的服务器上

echo $_GET['string']; // "+"

只有原始的HTTP请求包含url编码的数据。

对于GET请求,您可以从URI中检索它。$_SERVER['REQUEST_URI']或$_SERVER['QUERY_STRING']。对于urlencoded POST, file_get_contents('php://stdin')

注:

Decode()仅适用于单字节编码的字符。它不适用于整个UTF-8范围。

eg:

text = "\u0100"; // Ā
// incorrect
escape(text); // %u0100 
// correct
encodeURIComponent(text); // "%C4%80"

Note: "%C4%80" is equivalent to: escape('\xc4\x80')

这是在UTF-8中表示Ā的字节序列(\xc4\x80)。因此,如果您使用encodeuriccomponent(),您的服务器端必须知道它正在接收UTF-8。否则PHP会打乱编码。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板