我通常使用下面的函数来清理表单输入并获取值。但这突然停止了工作,并且了解到自5.4版以来,已经从PHP中删除了get_magic_quotes_gpc()功能。并且无法再启用或配置它,它已永久设置为“关闭”。现在我正在使用PHP 5.6,有人可以建议我像这样的函数来清理数据并防止SQL注入。
function clean($str) {
$str = @trim($str);
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}
答案 0 :(得分:0)
如果不使用PDO(强烈建议使用),则应使用mysqli_*
函数。在其中,您具有mysqli_real_escape_string()
函数来清理用户输入。您还可以使用utilize filter_var()
函数来过滤输入。
答案 1 :(得分:0)
我强烈建议升级到php7.2
不过,要回答您的问题,使用htmlspecialchars()函数会将特殊字符转换为html。
http://php.net/manual/en/function.htmlspecialchars.php
示例htmlspecialchars()
<?php
$new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES);
echo $new; // <a href='test'>Test</a>
?>
尽管使用htmlentities()更为常见,因为它会转换更大范围的字符。
http://php.net/manual/en/function.htmlentities.php
示例htmlentities()
<?php
$str = "A 'quote' is <b>bold</b>";
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str);
// Outputs: A 'quote' is <b>bold</b>
echo htmlentities($str, ENT_QUOTES);
?>
答案 2 :(得分:0)
mysql_real_escape_string 选项仅适用于旧版本PHP上的遗留代码,并且如果您不打算升级MySQL版本。
function clean($str) {
$str = @trim($str);
return mysql_real_escape_string($str);
}
推荐: 将MySQL版本升级到最新版本。 使用参数化的查询/准备语句。 Here 您会发现有用的讨论。