倒车`mysqli_real_escape_string`的影响

问题描述 投票:0回答:2

我工作的一个应用程序,用户可以创建HTML模板,并将其保存到database.The模板包括像文本,图像不同成分的etc.When我尝试保存文本用单引号'它给了我mysql_error(显然)。于是,我就向mysqli_real_escape_strings nulify it.It工作,但我想找回用于编辑的保存的内容和撇号的使用\(斜杠)。所以内容在内部修改,不再是一个有效的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}
    }); 
 }  

我添加了mysql_real_escape_string在我auto_save.php。现在,当我把它拿来从DB回来,我都要将它传递给这样的JavaScript变量。

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

这可以是一个问题?

php mysql function
2个回答
1
投票

stripslashes()将从任何字符串中删除斜线,并输出转义的数据时是有用的。

我相信你需要使用:

json_encode($IdLessContent, JSON_UNESCAPED_SLASHES);

与UNESCAPED_SLASHES的一部分,你的数据应该正确地返回。


0
投票

该monkeymatrix答案是不正确的最近版本的PHP(我测试7.3)。 mysqli_real_escape_string()只逃脱某些字符。这里是将扭转它的功能:

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

在正确编写的应用程序,应该很少会需要这个功能。你应该使用PDO与参数绑定,以处理任何自动逃逸。我只是创造了这个函数来处理这是在逃避一切输入一些旧代码,我需要一种方法来找回原来的数据。

© www.soinside.com 2019 - 2024. All rights reserved.