我正在将数据整理到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));