AJAX POST和加號(+)-如何編碼?
P粉124070451
P粉124070451 2023-07-21 09:47:06
0
2
684

我透過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: "Ā" is equivalent to: escape('\xc4\x80')

這是在UTF-8中表示Ā的位元組序列(\xc4\x80)。因此,如果您使用encodeuriccomponent(),您的伺服器端必須知道它正在接收UTF-8。否則PHP會打亂編碼。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板