我有一個用戶界面,用戶可以在其中鍵入一個人的名字和姓氏。 只要我沒有在搜索框中輸入任何內容,就不會找到用戶。但只要我進入一個空白區域,數據庫中的每個用戶都會返回。我修剪輸入字符串和檢查空格:無法過濾空白,查詢返回所有用戶
if (isset($_GET['lastname'])) {
$lastname_value = trim($_GET['lastname']);
//This Line is only used for setting the Text again in the Search Box
$tpl->setVariable('ss-search-lastname-value', $lastname_value);
}
if(isset($_GET['firstname'])) {
$firstname_value = trim($_GET['firstname']);
$tpl->setVariable('ss-search-firstname-value',$firstname_value);
}
之後,我撰寫的搜索查詢:
$sql = "SELECT e.`user_id`, e.`firstname`, e.`lastname`, e.`email`
FROM `employees` as e
WHERE 1";
if($lastname_value!="") {
$sql .=" AND e.`lastname` ='$lastname_value'";
}
if($firstname_value!="") {
$sql .=" AND e.`firstname` ='$firstname_value'";
}
一個正常的搜索返回用正確的名字和姓氏預期的用戶,如果我不輸入任何內容並開始搜索,不會返回任何結果。然而,搜索框中只有一個空格,我得到所有用戶。我該如何解決這個問題?
我認爲正確的做法是不編寫SQL字符串形式,因爲你是開放的注入攻擊。用參數重做它,也許你不會再有問題了。 –