使用Javascript/jQuery剥离转义字符



我正在将数据整理到Wordpress数据库中,并在成功时在div中显示写入数据库的文本,以便人们可以看到中写入的内容

我的代码如下:

$.ajax({
       type: "POST",
       url: "<?php echo get_bloginfo('template_url').'/insert_comment.php';?>",
       data: dataString,
       cache: false,
       success: function(html){
    var returnedArray = html.split('|');
    var newhtml = $.trim(unescape(returnedArray[0]));
    $("#quote").fadeOut(200,function(){ 
                   $("#quote_cont").text(newhtml);
                   $("#quote span").text(returnedArray[1]) });
    $("#quote").fadeIn(200);
       }

例如,如果用户写下评论"我不明白!!"

div#quote显示"我不明白!!",但当我查看数据库时,它是在没有"\"..的情况下编写的。。如果我使用PHP直接从数据库中提取内容,我就不会得到"\"

编辑:

下面更改的PHP文件现在是正确的。。非常感谢@deceze对我的耐心,请确保您的mysql_real_eescape_string()在数据库连接之后出现

<?php  $con = mysql_connect("localhost","root","root");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}
mysql_select_db("robomon_wbc", $con);
$order_id = mysql_real_escape_string($_POST['order_id']);
$email = mysql_real_escape_string($_POST['email']);
$name = mysql_real_escape_string($_POST['name']);
$comment = mysql_real_escape_string($_POST['comment']);
$comment = strip_tags($comment);
mysql_query("UPDATE wp_orderdata SET `comment`='".$comment."', `cus_name` = '".$name."' WHERE `order_id`='".$order_id."' AND `order_email`='".$email."';");
mysql_close($con);
echo $_POST['comment'].'|'.$_POST['name']; ?>

将注释插入数据库的代码是错误。它依赖于Magic Quotes,这就是您在输出值中看到斜杠的原因。请阅读以上关于Magic Quotes的文档,它们很糟糕,不推荐使用。相反,您需要使用mysql_real_escape_string对值进行SQL转义,或者首先使用更好的MySQL接口,该接口支持已准备好的语句,如MySQLi或PDO。

总之,斜杠是由Magic Quotes引起的,您可以在服务器上剥离/禁用它,但如果您这样做,则需要更改数据库代码以避免SQL注入漏洞。无论如何,您都应该更改数据库代码,因为即使使用MagicQuotes,您仍然容易受到SQL注入的攻击。

这应该有效:

var newhtml = $.trim(unescape(html));

最新更新