0
所以我有一個帶有2個文本輸入的表單。 一個是價格,另一個是數量。 在保存表單之前,有一些檢查可以防止篡改用戶輸入和SQL注入。防止篡改用戶輸入和SQL注入失敗
所以其中之一是:
if(strval(floatval($quantity)) === $quantity && strval(floatval($price)) === price) {
$errors = false;
}
與此檢查的問題是,如果我們有$價格=「47.80」例如 floatval()爲我們提供了47.8,然後strval()給了我們「 47.8「,這不等於」47.80「 所以檢查失敗,我們得到一個錯誤。
我想知道你是否可以想辦法解決這個問題,而不必更改邏輯。
這是爲什麼?如果你的數量是整數 - 檢查它是否是整數。如果你的價格是浮動的 - 檢查它是否浮動。例如,對於字符串表示的數字,存在諸如「is_numeric()」之類的東西。但真的:[this](http://us1.php.net/filter_var)和[this](http://us1.php.net/ctype) – 2014-09-04 10:54:07
真正的解決方案是使用準備好的語句,而不必擔心關於sql注入。 – 2014-09-04 10:55:55
這不是一個浮動。它實際上是一個來自數據庫的字符串。它也存儲爲一個字符串。再加上輸入是一個帶有字符串值的文本框。這就是表單的方式,就像我說過的,我不想因爲各種原因而改變它。所以我必須找到一種方法來操縱它。 – 2014-09-04 10:55:57