2012-04-12 69 views
0

我正在建立一個表單系統,現在我已經開始進行驗證。我的框架是CI所以我的驗證的主要部分我有'trim|required|htmlspecialchars'但我是想知道:新西蘭電話表單驗證

A)是什麼最好用的網址和電話*輸入

B)你會怎樣建議我使用客戶端驗證 - 如果有的話?

*我從新西蘭感到所以我們的電話號碼是00 123 4567或1234567

+0

看看@ php filters:http://www.php。 net/manual/en/filter.filters.php – 2012-04-12 03:28:30

回答

1

CI's validation嚴重低劣的處理,尤其是當你想使用jQuery的真棒pluggins,使生活簡單。

對於客戶端,我使用由JörnZaefferer編寫的jquery plugin,它很容易獲得,並且是非常可定製的。

對於標準的東西,例如網址,有很多內置的方法,對於NZ電話號碼,我創建了一些自定義規則,您可以將其添加到插件附帶的additional-methods.js文件中。

/** 
* matches NZ phone number formats 
* 
* +64 7 123 1234 
* or 
* 07-123-1234 
* or 
* 071231234 
* 
* spaces/hyphens optional 
* 
*/ 
jQuery.validator.addMethod('phoneNZ', function(phone_number, element) { 
return this.optional(element) || phone_number.length > 9 && 
phone_number.match(/^(0|(\+64(\s|-)?)){1}\d{1}(\s|-)?\d{3}(\s|-)?\d{4}$/, 'Please specify a valid phone number'); 


/** 
* matches NZ mobile number formats 
* 
* 021 123 1234 
* or 
* 027 123 1234 
* or 
* 022-123-1234 
* or 
* +64 21 123 1234 
* 
* spaces/hyphens optional 
* 
*/ 
jQuery.validator.addMethod('mobileNZ', function(phone_number, element) { 
return this.optional(element) || phone_number.length > 9 && 
phone_number.match(/^(0|(\+64(\s|-)?)){1}(21|22|27){1}(\s|-)?\d{3}(\s|-)?\d{4}$/); 
}, 'Please specify a valid mobile number'); 

作爲一個側面說明,用這些謹慎,除非你打算撥打這些數字計算剛剛離開他們對長度的限制自由文本,還有人們如何想輸入電話號碼很多變化你最好不要通過執行不適合他們/他們的數量/字母/ +符號/擴展等的規則來排擠人們。

+0

看起來不錯,是的CI驗證是狗屎,只是不確定如何攻擊它可惜他們沒有一個驗證和電話哈哈 – 2012-04-12 04:14:48

+0

是的,歡迎來到開源。有一個很好的理由,但他們並不是因爲它們是像框架應該解決所有情況一樣困難的問題。基本上,如果他們不能完成他們不會的解決方案,並且不應該嘗試。 XSS過濾器是他們爲什麼不應該的一個很好的例子。 – Louis 2012-04-12 04:25:03