這是我第一篇文章在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