我是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']; ?>
答案 0 :(得分:2)
将注释插入数据库的代码是错误。它依赖于Magic Quotes,这就是你在输出值中看到斜杠的原因。请阅读上述关于Magic Quotes的相关文档,它们很糟糕,已弃用,不推荐使用。相反,您需要使用mysql_real_escape_string
来使用SQL转义值,或者使用更好的MySQL接口来开始支持预准备语句,例如MySQLi或PDO。
总结一下,斜线是由魔术引号引起的,你可以在服务器上剥离/禁用它,但如果这样做,你需要更改数据库代码以避免SQL注入漏洞。无论如何,您应该更改数据库代码,因为即使使用Magic Quotes,您仍然容易受到SQL注入攻击。
答案 1 :(得分:0)
这应该有效:
var newhtml = $.trim(unescape(html));