gpt4 book ai didi

javascript - 如何将文本字段 ('+<>$"中的特殊字符保存到数据库中,然后使用 PHP 检索它们?

转载 作者:行者123 更新时间:2023-11-29 06:31:44 24 4
gpt4 key购买 nike

我有一个为个人消息创建的文本区域,带有一个主题。它被传递给 Javascript/jQuery 函数,该函数将它传递给 PHP 文件以存储在数据库中。但是,当使用符号、小于号、大于号、撇号、加号和引号等特殊字符时,它不会正确存储在我的数据库中。所以不用说,当我检索数据时,数据显示不正确。

这是 HTML:

 <input id="pmsubject" placeholder="Subject"><br />
<textarea id="pmtext" placeholder="Send a private message"></textarea>
<button id="pmBtn" onclick="postPm(pmsubject,pmtext)">Send</button>

这是 Javascript/jQuery(部分):

function postPm(subject,textarea){
var data = $("#textarea").val();
var data2 = $("#subject").val();

我做了一些错误检查和处理,然后使用 AJAX 发送我的信息:

type: "POST",
url: "pm_system.php",
data:"data="+data+"&data2="+data2,

到目前为止还不错吧?这是我存储代码的 pm_system.php 部分:

$data = htmlentities($_POST['data']);
$data = mysqli_real_escape_string($db_con, $data);
$data2 = htmlentities($_POST['data2']);
$data2 = mysqli_real_escape_string($db_con, $data2);

$sql = "INSERT INTO pm(subject, message)
VALUES('$data2','$data')";
$query = mysqli_query($db_con, $sql);
mysqli_close($db_con);

因此,如果我写一条消息说,我是猫 + 狗和“有时”鸟的忠实粉丝。我的输出将是:

I\'m a big fan of cats   dogs

It always puts slashes in front of quotations and apostrophes, always replaces + sign with a space, and nothing follows after an ampersand sign. I've tried replacing the characters like this in Javascript:

data = data.replace(/\"/g, '&quot;'); //Just using one for example

但这也行不通。如何将文本区域中的这些字符原封不动地保存到数据库中?

最佳答案

我猜,您通过 JavaScript 函数接收的数据已经被转义了。因此,当您输入 I'm a big fan of cats dog 时,您会在 PHP 脚本中得到 I\'m a big fan of cats dogs。当您使用 mysqli_real_escape() 时,您正在添加另一个转义字符。

所以你可能想替换之前的转义字符:

$data = stripslashes($_POST['data']);
$data = mysqli_real_escape_string($db_con, $data);
$data2 = stripslashes($_POST['data2']);
$data2 = mysqli_real_escape_string($db_con, $data2);

$sql = "INSERT INTO pm(subject, message)
VALUES('$data2','$data')";
$query = mysqli_query($db_con, $sql);
mysqli_close($db_con);

我不建议使用 htmlentities(),而是将数据“按原样”保存到数据库中,否则全文搜索等功能将无法正常工作。

+ 号的问题可能是因为您将值作为查询字符串 data:"data="+data+"&data2="+data2 发送,并且在 URL 中,+ 号是用于空间。要解决这个问题,您应该将数据作为对象传递:

type: "POST",
url: "pm_system.php",
data: { "data": data, "data2": data2 },

这也应该可以解决大多数其他有问题的字符。

关于javascript - 如何将文本字段 ('+<>$"中的特殊字符保存到数据库中,然后使用 PHP 检索它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27536272/

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