這個題目好像太長了點,但是不這麼長,又很難寫出文章的真正意思。什麼叫做「如何在phpBB下限定使用者只能使用特定email註冊帳號?」就是在phpBB的開放源碼討論版程式中,他可以限制使用者「不得」使用某些電子郵件來註冊帳號,但是我如何限定「只能」使用某些電子郵件來註冊帳號呢?
在phpBB的管理界面中,你可以在「會員及群組」的Tab下的「封鎖的email」去設定「不得」使用某些電子郵件來註冊帳號。
例如不允許*@yahoo.com.tw、*@kimo.com來封鎖使用Yahoo的電子郵件 (如下圖)
但是phpBB的設定上並沒有告訴你,如何限定「只能」使用某些電子郵件來註冊帳號,也就是可能我只允許@gmail.com,或是我只允許公司電子郵件*@dns.com.tw,那麼我應該怎麼做呢?
找遍了網路上的設定教學,真的找不到如何去修改,所以只好自己手動來試看看囉。
為了不破壞原本phpBB的程式完整性,及減少製造可能的錯誤,因此不打算去修改php的程式碼,而把修改的方向放在修改template,在模板中使用javascript去做輸入資料的確認。
因此看你使用哪個版面風格,到styles目錄去找到你使用的風格(預設內有prosilver與subsilver2),筆者是使用prosilver,因此到styles/prosilver/template下找到ucp_register.html,在<body>內加入以下的code:
然後在email欄位的<input>內加入 onChange=”CheckEmail(this.value)” ~ 如下圖
這樣修改過後,如果你填寫的email不是@dns.com.tw的格式,就會出現錯誤訊息,並且把按鈕disabled讓你無法送出資料。
這樣你就可以使用phpBB只能讓人註冊時只允許某個特定的電子郵件格式。如果你有更好的方法,也歡迎提供囉。
其實這個透過javascript來進行資料送出前的檢驗(validation),不僅可以用在phpBB,也可以用在任何情況下,只要資料格式沒有通過檢驗,就不能送到伺服器端,也可以減少伺服器端的負載。