我目前正在創建基於jQuery validator plugin的表單驗證腳本。所以,簡單的配置很容易,如最小長度,最大長度,要求等。
之後,我決定檢查客戶端的用戶名/電子郵件的可用性,所以我不得不使用remote
選項,這是我必須在創建規則數組時指定一個選項。所以,在創建規則時,我必須將數據發送到php腳本並檢查輸入字段的可用性。爲客戶端泄露網站的MySQL表名是否安全?
但是由於我要檢查多個輸入字段的可用性,我創建了一個函數(在客戶端)重用它用於每個字段,並且該函數需要輸入字段的ID和MySQL表的名字,把事情說清楚,這裏的功能:
注:
1.check_input是一個PHP腳本,將輸入字段的值和表覈對,它會返回一個JSON編碼的布爾值,如果表中沒有匹配,則爲true,否則爲false。
function check_input(input, table){
$.ajax({
type:"POST",
url:site_url+"site/check_input",
data:{
input:input,
table:table,
}
}).done(function(resp){
var is_unique = JSON.parse(resp);
return is_unique;
});
}
這個函數將通過設置remote
選項
check_input($('#field').val(), 'table.column');
被調用。因此,正如你所看到的,我必須從客戶端指定我的MySQL表,並且每個用戶(很好的&壞的)都可以看到這個,這是否被認爲是不安全或不好的做法?
如果不是,那麼檢查可用性的適當方法是什麼?
謝謝,我想我會去做額外的工作,但是我沒有創建API的經驗,所以我想知道它是如何在理論上起作用的? – Abdulaziz
您可以將列的名稱傳遞給您的PHP(它們不一定是實際的名稱),然後使用switch語句根據字符串的值而有所不同。 – Joe