[英]Why does mysqli_real_escape_string() not change my string by escaping semicolons and slashes?
我有以下用于大致识别机器的代码:
$computerId = "UserAgent:".$_SERVER['HTTP_USER_AGENT']."RemoteAddress:".$_SERVER['REMOTE_ADDR'];
我使用以下代码比较转义字符串和未转义字符串:
echo "Unescaped:
".$computerId."
Escaped:
".mysqli_real_escape_string($conn, $computerId);
这是我得到的输出:
未转义:UserAgent:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,like Gecko)Chrome / 68.0.3440.106 Safari / 537.36RemoteAddress ::: 1
转义文件:UserAgent:Mozilla / 5.0(Windows NT 10.0; Win64; x64)AppleWebKit / 537.36(KHTML,like Gecko)Chrome / 68.0.3440.106 Safari / 537.36RemoteAddress ::: 1
如您所见,它们完全相同,并且转义看起来也没有做任何事情,因为两个字符串都包含未转义的反斜杠和分号。 是什么原因造成的?
根据文档
http://php.net/manual/zh/function.mysql-real-escape-string.php
mysql_real_escape_string()调用MySQL的库函数mysql_real_escape_string,该函数将反斜杠添加到以下字符前:\\ x00,\\ n,\\ r,\\,','和\\ x1a。
因此,分号(;)不是该函数转义(或前置)的字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.