使用Javascript / jQuery剥离转义字符

时间:2012-01-16 03:24:31

标签: javascript jquery

我是ajax的数据到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文件现在是CORRECT ..非常感谢@deceze耐心等待我,确保你的mysql_real_escape_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']; ?>

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

这应该有效:

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