掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流
今天有個朋友出現了一個問題,就是在他的論壇中以前設置了可以不填寫郵箱也可以注冊帳號,以前沒任何問題,而現在他發(fā)現如果不填寫郵箱就注冊不了了。如下圖所示:
在DZ3.2以前的版本的后臺我們可以在全局——注冊與訪問——取消郵箱注冊必填如下圖,其實這個設計完全是多余的,因為我估計95%以上用戶不會動這個設置,主要的原因有以下幾點:
1、對于普通的小網站來說,用郵箱作為用戶的備用帳號是合理也是成本低的,不像大網站可能還會用到手機號碼之類的,而且就算是大網站注冊的時候一般都會提示用戶綁定郵箱;
2、對于用戶取回密碼等操作,小網站似乎使用郵箱來作為憑據是再好不過的了;
3、收集用戶的信息郵箱是非常重要的,對于網站以后發(fā)送緊急通知等信息是有幫助的。
接下來就問題來了,Discuz官方團隊可能也考慮到了這個問題,也許他們也像我這樣認為這個地方在后臺出現沒多大必要,于是他們就在X3.2版本中更新了這個模塊,更新的結果我覺得應該是這樣的:在后臺取消這個設置,但數據庫里面存儲的信息不變,而且在注冊的時候不再使用這個數據庫里面的設置的值為依據。于是就造成了上面的問題了,雖然讓用戶覺得不需要必須填(因為沒紅星),但不填之后注冊不了。
通過對X3.1后臺設置分析發(fā)現這里是一個radio類型的,也就是開關(廢話而已,誰都看得出來);表單name為settingnew[forgeemail],值為0和1,0為關閉,1為打開,這個跟一般的習慣都是一樣的。也就是說這個值選擇1時我們注冊的時候可以不需要填寫郵箱,反之也就是默認情況下我們必須填寫郵箱才能注冊帳號。
而做過Discuz二次開發(fā)的同學都應該清楚,其實后臺類似這樣的設置數據都是存儲在common_setting這個數據表中,而很快我發(fā)現這個數據表中直接有forgeemail這個記錄,說明這個地方dz是直接保存的(不想保存高亮值信息那樣,還通過進制轉化,哈哈,不用再看源代碼去了)。如下圖(當然下面是默認的樣子)
說到這里大家就應該明白了什么問題了,其實這個問題就是3.2以后這個數據表中的skey為forgeemail的記錄只是用于判斷是否帶紅星,而不用于判斷是不是真要填;換句話說不管這里設置的是0還是1,你的網站注冊的時候都得填寫郵箱(這可能也是DZ團隊在升級改變這個問題所忽視的地方,比如就算強制設計成必填,那么也應該把數據庫的這個字段值在升級的時候自動覆蓋成0了)。
那么如果徹底解決(也就是可以讓你的網站實現用戶不不必填寫郵箱也可以注冊),這個相對比較復雜,要修改你注冊表單的驗證程序,而且我個人也不推薦這么做,這里就不詳述了。
那么接下來就是把注冊的時候帶上紅星(其實默認的時候就是這樣的),當然問題是針對在3.2之前通過后臺設置過這值的網站。那么現在去數據庫找到common_setting這個數據表找到skey值forgeemail的svalue改為默認的0就可以了,也可以在數據庫管理工具或者網站后臺運行以下sql語句
update pre_common_setting set ‘svalue’=’0′ where ?‘skey’=’forgeemail’
注意:這里的表前綴為DZ的默認的pre_,如果你修改了,改成你新修改的
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網交流