function intfix($i)
{
$i = preg_replace('/[^\d]/', '', $i);
if (!strlen($i))
$i = 0;
return $i;
}
function textfix($text = ""){
if(!is_array($text)){ $text = htmlentities($text,ENT_QUOTES,"UTF-8");
}
return $text;
}
這兩個函數過濾所有用戶提交的變量。你覺得它足夠安全嗎?字符編碼和網站安全
我對字符編碼有點困惑。我想讓我的用戶可以玩ACII藝術,並使用任何他們想要的符號,但目前看起來不可能。應該做什麼?這可能與表格的編碼以及我的功能有關。
編輯:
數字其實真的很大。有時以萬億計。
這是我如何過濾用戶輸入一個例子:
if($_GET['number']){ $number = intfix($_GET['number']); }
if($_GET['text']){ $text = textfix($_GET['text']); }'
是這個錯誤你在說什麼?
此外,這是我如何插入到數據庫之前進行篩選:
function filter($input,$s=1){
$input = strip_tags($input, "");
$input = str_replace("\n", "<br />", $input);
if($s == 1){$input = bbcode($input); } // smileys and bbcode
$input = textWrap($input); // wordwrap without breaking html
return $input;
}
function unfilter($input){ // to unfilter in case I need to show the text in a textbox
$input = html_entity_decode($input,ENT_QUOTES,"UTF-8");
$input = str_replace("<br />", "\n", $input);
return $input;
}
這些數字實際上非常大。有時以萬億次爲單位,因爲這是一款MMORPG遊戲。這個例子是如何過濾用戶輸入的: if($ _ GET ['number']){$ number = intfix($ _ GET ['number']); }($ _GET ['text']){$ text = textfix($ _GET ['text']);} if }' 這是你所說的錯誤嗎? – domino
我在我的主要文章中添加了兩個其他函數,展示瞭如何在插入數據庫之前過濾數據。希望你可以看看。 – domino
不,不,不。這不好。你的intfix是可以的,如果你確實有數字大於32位有符號整數。 (雖然我很驚訝你有數字這麼大。)但其餘的都不好。 textfix和filter應該在OUTPUT * NOT *上輸入!對於數據庫使用'mysql_real_escape_string()',沒有別的。當你在頁面上顯示它時,你可以過濾等。 – Ariel