2012-09-16 13 views
1

這是一個相當開放的問題,但是我想知道什麼是在註冊表單中驗證用戶輸入的推薦方法,並且在嘗試提交之前向用戶轉發什麼(如果有的話)信息需要更改再次。現在,我有我的表單設置與一些HTML屬性,如maxlength,但顯然是不可靠的。所以在PHP代碼中,我已經過濾掉超過長度的字符串,清理輸入等。但是,如果給定的輸入無效,我將PHP代碼重定向到註冊頁面,該頁面正常顯示,沒有用戶以前的輸入,也沒有任何需要更改的指示符。推薦的方式在註冊表格中標記用戶輸入中的錯誤字段?

這顯然是不能接受的,所以我需要知道是否應該使用JavaScript作爲驗證的中間裝置和顯示的指標,或如果我要使用會話變量中繼該先前輸入,並且表示要顯示的字段的錯誤對於。或者完全是別的。

希望我的問題很清楚,所有的幫助都非常感謝!

編輯:是否有JavaScript的用戶禁用了這種類型的事情應該考慮到的現實問題?

+0

沒有最好的辦法。有人會提出一件事,有人會建議另一件事,接下來你知道這是人類的犧牲,貓和狗住在一起,羣衆歇斯底里, –

+0

你可以用JS驗證輸入的客戶端,或者將它發送到服務器使用AJAX驗證(最終需要這樣做)。 – Blender

+0

@Marc B在這種情況下,我仍然希望聽到人們的意見,說明爲什麼一種方法可能比另一種更好。我從來沒有編寫過類似的東西,所以任何輸入都有幫助。 – fvgs

回答

2

你的答案很簡單:

BOTH

首先,在客戶端進行初始驗證。 這不是關於做用戶檢查/認證/權限級別(至少現在還沒有)。 如果您使用AJAX調用來檢查是否有人試圖使用已經註冊的電子郵件地址創建帳戶,或者該類型的「安全」(請清理所有內容)檢查。

這是關於:「這個領域是否通過了白癡檢查」。

這就是JS驗證應該是。 如果失敗,請在該字段上設置css類,以便讓人們在視覺上知道發生了什麼。看看CSS :before:after僞選擇,讓您做這樣的事情(在這種情況下input)之前添加文本或圖像/你的造型之後的事情

input.valid:before { content : url("checkmark.png") } 
input.invalid:after { content : url("big-red-x.png") } 

您可以動態地添加的工具提示或者提供關於錯誤的用戶友好信息的消息橫幅。

所有這些東西都可以由知道如何提交POST請求的人得到,使用衆多開發友好的Web解決方案之一(或者只是真正無聊的人,他們會用他們的腳本來做到這一點)自己的服務器,如果你的網站是開放的)。

這就是爲什麼你仍然需要使用PHP進行驗證。

這也是一次消毒一切(或使用PDO作爲數據庫訪問層,並利用他們,消毒前的溶液)。 然後你就可以開始尋找你的數據庫來尋找權威和其他東西了。

如果PHP方面出現錯誤,請將它們轉儲回已存在的頁面,並將其舊值填充。

從那裏,無論是觸發JS驗證錯誤,有一些服務器端的消息... ... 並再次運行JS驗證,在領域 拿起錯誤...也(用於非JS人,儘管你可以在頁面加載中隱藏/刪除它)包含一個靜態的橫幅,用於存放你在PHP中遇到的錯誤列表。

這可以隨心所欲,你可以將所有這一切都運行通過一系列的AJAX調用,PHP錯誤返回到錯誤數組,返回頁面,成爲解析並應用於不適當的領域,或放在某處的中央橫幅...

就像你說的,這是一個非常開放的問題。

所以你的目標從一個高的水平,在客戶端方面是, 1.提供響應(/即時),方便用戶的反饋,當事情是不正確 2.使反饋簡潔,明確,可操作的 3.儘可能地做到不導致我重寫所有內容,或者在頁面之間來回切換 - 最終,夢想是在填寫表單和進入我嘗試訪問的內容之間進行0頁更改。