这是我第一篇文章在stackoverflow。 我要问几个简单:与PHP消毒输入,真的感谢的人谁可以帮助我:)PHP - 我应该在magic qotes关闭时清理字符串吗?
1)好吧,但是当我运行get_magic_quotes_gpc()返回false d问题。这意味着关闭了魔术引号。它是否正确?
2)我应该使用stripslashes(),htmlentities()& strip_tags()何时禁用魔术引号来清理任何用户输入的字符串吗?
3)即使在输入字符(如\或其他字符)时关闭了魔术引号,但我的程序无法避开它们。这是为什么?
4)然后我修改我的程序来调用函数来清理字符串,然后处理它。即使字符串被清理,它仍然显示那些不需要的字符。这有什么错在sanitizeString()函数
下面是我的代码,对问题3) 相关(该程序应该华氏转换成摄氏或反之亦然)
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<form action="TemperatureConverter.php" method="post">
<label>Fahrenheit</label><input type="text" name="f" size="10"/><br>
<label>Celsius</label><input type="text" name="c" size="10"/><br>
<input type="submit" name="submit" value="SUBMIT">
</form>
</body>
</html>
<?php
$f='';
$c='';
if(isset($_POST["f"])){
$f= sanitizeString($_POST["f"]);
}
if(isset($_POST["c"])){
$c=sanitizeString($_POST["c"]);
}
if($f!=""){
$c=(5/9)*($f-32);
echo $f.' Fahrenhite is equal to '.$c.' Celsius ';
}
else if($c!=""){
$f=$c*(9/5)+32;
echo $c.' Celsius is equal to '.$f.' Fahrenhite ';
}
function sanitizeString($str){
$str= stripslashes($str);
$str= htmlentities($str);
$str= strip_tags($str);
return $str;
}
我想我已经发布我的代码正确遵守规则的计算器。如果没有抱歉。 :(
根据您在进入该环境时带入的特定_context_处理数据。对任何数据只要使用stripslashes,htmlentities和strip_tags“无论如何”都只是无稽之谈。这是一个已经讨论了很多的话题,所以请做一些研究。 – CBroe
你应该看看PHP的'filter'函数[here](http://www.php.net/manual/en/book.filter.php)。他们可以很费劲地使用,但提供了广泛的选项来消毒和验证输入。 – 2014-01-16 11:14:12