我有一个web客户机-我想确保在web客户机上输入的所有数据都保存到db(安全/干净)。我断断续续地读了好几篇关于这个问题的文章,但到目前为止,我只解决了我的部分目标。现在,我将javascript/jquery用于apachemysql 5.6。我可以安全地输入像“<>”/这样的数据,但不能输入\字符。它到达了服务器,但是当数据到达我的数据库时,\已经消失了。
我做错什么了?
网页摘要如下:
<head><meta charset="utf-8" /></head>
<body>
<form accept-charset="UTF-8">
</form>
</body>
我的javascript/jquery环境集类似于
formdata["summary"]="some text read from form from form";
var jsondata="data="+JSON.stringify(formdata);
$.ajax({ url: "/register.php", type: "GET", dataType: "json", data: jsondata, success: RegistrySuccess, error: RegistryFail });
我的php v5.6摘要:
header("content-type: application/json; charset=utf-8");
$jsondata=json_decode( rawurldecode($_REQUEST["data"]) ,true);
(我可以将$jsondata的输出转储到屏幕上,它将显示我的客户机表单数据,其中可能包括
"<b>123</b>"
"town \ break"
我通过htmlentities()传递$jsondata。。。htmlentities()之后的输出示例:
address='address <b>123</b>',
town='town \ break'
然后执行mysql prepare,然后执行insert。所有东西都进去了,除了“\”不见了。。。
$QUERY="INSERT registry5 SET name='name',address='address <b>123</b>',town='town \ break'";
$stmt = $DB->prepare($QUERY);
$stmt->execute();
我的表是用utf8字符集,innodb存储引擎定义的。
我遗漏了什么阻止我写反斜杠?我以为我已经用htmlentities和utf8实现了无故障数据存储。感谢大家的帮助。
暂无答案!
目前还没有任何答案,快来回答吧!