当通过ajax发送到php/sql时,无法存储HTML

Can not store HTML when sent to php/sql through ajax

本文关键字:sql HTML 存储 php ajax      更新时间:2023-09-26

我想在按下按钮时存储一些div内容。我需要/想要保存html标记,以便重用。

当我用任何类型的字符串替换post变量时,它都能完美地工作。我尝试从换行符中清除html变量,但它没有做到,还尝试在$var = <<<HTML HTML中外壳$html帖子,但这也不起作用。

这是javascript:

$("#save").click(function(){
var pageHTML = $("#page_wrap").html();
var name_page = "name";
jQuery.ajax({
  type: "POST",
  url: "php/saveModel.php",
  data: {   nHTML: pageHTML,
            page : name_page
        },
    success:function(data){
      var responseData = jQuery.parseJSON(data);
      var new_div = responseData.message;
      $("#page_wrap > *").remove();
      $("#page_wrap").prepend(new_div);
      $('.editable').aloha();
    }
})
})

这是php:

<?php
mysql_connect('localhost','name','pwd');  
mysql_select_db('db');
mysql_query("SET NAMES 'utf8'");
$id = $_POST['page'];
$HTMLpost = $_POST['nHTML'];
$insertSignup = mysql_query("UPDATE Table_name SET model_test='$HTMLpost' WHERE    identifiant='$id'");
if($insertSignup){ 
$status = "success";
$message = "OK";
}
else {
$status = "error";
$message = "NOT OK";
}
//return json response
$data = array(
    'status' => $status,
    'message' => $message
);
echo json_encode($data);
exit;
?>

谢谢!

简单答案:使用mysql_real_escape_string()更改引号,使其可以安全地进入数据库。

$HTMLpost = mysql_real_escape_string($_POST['nHTML']);
$insertSignup = mysql_query("UPDATE Table_name SET model_test='$HTMLpost' WHERE    identifiant='$id'");

答案更长:您不应该使用mysql_()函数,因为它们正在贬值。请使用PDO或mysqli查看准备好的报表,它们会为您安全地处理这些报表(并且不会贬值)。

阅读:http://php.net/manual/en/pdo.prepared-statements.php或者在谷歌上搜索更多——周围有很多例子。当mysql_()函数被删除时,最好在被刺痛之前立即学习。