gpt4 book ai didi

php - 逆转 `mysqli_real_escape_string`的影响

转载 作者:行者123 更新时间:2023-11-29 08:36:13 26 4
gpt4 key购买 nike

我正在开发一个应用程序,用户可以在其中创建 HTML 模板并将其保存到数据库中。模板由不同的组件组成,如文本、图像等。当我尝试使用撇号 ' 它给了我 mysql_error (显然)。所以我尝试 mysqli_real_escape_strings 来取消它。它有效,但我想取回保存的用于编辑目的的内容和撇号使用\(斜杠)进行转义。因此内容在内部进行了修改,不再是可编辑的有效 html,并且浏览器会抛出语法错误。
我还尝试搜索其他函数进行转义,并遇到 json_encode 但这不被 mysql 接受。
有人能给我指出任何可以在 php 中执行此操作的函数吗?请建议任何可以为我执行该任务的函数!

更新:

  function saveContent(){   
var $getContent = $('#mainWrap').clone();
$getContent.find('.textBox, .pictureBox').removeAttr('id');
var saveContent = $getContent.wrap('<div></div>').html();
console.log(saveContent);
var getBodyStyle=$('body').attr('style');
console.log('this is body style'+getBodyStyle);
var auto="auto";
$.ajax({
url:"auto_save.php",
type:"POST",
dataType:"text",
//data:"txtComp="+saveContent+"&auto="+auto+"&pageId="+pageId+"&webId="+webId+"&userId="+userId+"&bodyStyle="+getBodyStyle,
data: {txtComp: saveContent, auto: auto, pageId: pageId,webId:webId,userId:userId,bodyStyle:getBodyStyle}
});
}

我在我的auto_save.php中添加了mysql_real_escape_string。现在,当我从数据库取回它时,我必须将它传递给这样的 JavaScript 变量。

    var getSavedContent = <?php echo json_encode($IdLessContent); ?>;

这会是一个问题吗?

最佳答案

mysqli_real_escape_string 的效果不必逆转。所有转义都是针对 SQL 查询完成的,并且从未存储在数据库中。恢复斜杠的唯一原因是进行两次转义。

在正确编写的应用程序中,根本不应该有任何转义。您应该使用带有参数绑定(bind)的 PDO 来自动处理任何转义。

我只创建了以下函数来处理一些转义两次的遗留代码,并且我需要一种方法来返回原始数据。

function reverse_mysqli_real_escape_string($str) {
return strtr($str, [
'\0' => "\x00",
'\n' => "\n",
'\r' => "\r",
'\\\\' => "\\",
"\'" => "'",
'\"' => '"',
'\Z' => "\x1a"
]);
}

关于php - 逆转 `mysqli_real_escape_string`的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15133984/

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