我一直试图传递这个值:
// Content to submit to php
Others string here. And this link:
http://www.youtube.com/watch?v=CUUgKj2i1Xc&feature=rec-LGOUT-exp_fresh+div-1r-2-HM
到php页面,并将其插入数据库。这是我目前的代码:
... // javascript
var content = $("#mcontent").val();
$.ajax({
url : '<?php echo PATH; ?>functions/save.php',
type: 'POST',
data: 'id=<?php echo $_GET['id']; ?>&content=' + content + '&action=save&val=<?php echo md5("secr3t" . $_SESSION['userid_id']); ?>',
dataType: 'json',
success: function(response) {
if (response.status == 'success') {
alert(response.message);
} else {
alert(response.message);
}
}
});
实际上没有错误,但在数据库中,它保存的是:
Others string here. And this link:
http://www.youtube.com/watch?v=CUUgKj2i1Xc
我想我知道问题是什么,问题是:
http://www.youtube.com/watch?v=CUUgKj2i1Xc的&安培;特征 = REC-LGOUT-exp_fresh + DIV-1R-2-HM
我认为它将“&amp; feature =”作为另一个POST数据。我尝试过:
使用Javascript HTML编码/解码功能(也可在互联网上找到)
但两者都不起作用。你有其他方式吗?
编辑:
您是否预见到可能发生的任何其他问题?内容由用户输入/写入。意思是,用户可以键入/写入任何内容。反手,我做了其他检查,包括“mysql_real_escape_string”
答案 0 :(得分:1)
学习逃避。你很容易受到XSS的攻击。在这种情况下,您的数据是网址的一部分,因此您必须urlencode()
。
var content = $("#mcontent").val();
$.ajax({
url : '<?php echo PATH; ?>functions/save.php',
type: 'POST',
data: 'id=<?php echo urlencode($_GET['id']); ?>&content=' + urlencode(content) + '&action=save&val=<?php echo md5("secr3t" . $_SESSION['userid_id']); ?>',
dataType: 'json',
success: function(response) {
if (response.status == 'success') {
alert(response.message);
} else {
alert(response.message);
}
}
});
注意:我假设PATH不包含'
和\
等特殊字符。由于$_SESSION['user_id']
是md5-ed,因此它不需要转义,因为它是安全的(md5返回一个固定长度为32的字符串,仅包含0-9和a-f。
答案 1 :(得分:1)
关于jQuery的一个好处是data参数可以采用JS对象,因此您不需要尝试手动构建查询字符串。
<?php
$data = array("id" => $_GET['id'],
"action" => "save",
"val" => md5("secr3t",$_SESSION['userid_id'])
);
$json_data = encode_json($data);
$json_data = str_ireplace($json_data, '</script>', '<\/script>');
echo "var data = $json_data;";
?>
data.content = content;
$.ajax({
url : '<?php echo PATH; ?>functions/save.php',
type: 'POST',
data: data,
dataType: 'json',