discuz簽名長度限制無效的問題分析及改進方法
2024-09-11 09:06:00
供稿:網友
問題表現: 后臺設置的簽名文字最大長度無效,導致被人在簽名里掛廣告。 原因分析: 出現這個問題的原因是由于官方QQ互聯里內置了微博簽名的功能,因為使用微博簽名的話會導致簽名長度設置無效。 具體代碼分析: 找到source/plugin/qqconnect/connect.class.php文件 if(submitcheck('profilesubmit')) { $_G['group']['maxsigsize'] = $_G['group']['maxsigsize'] < 200 ? 200 : $_G['group']['maxsigsize']; return; } 其中的$_G['group']['maxsigsize']即為后臺設置的簽名最大長度,此處可知如果此值小于200,則置為200字節。 此處更改了最大長度的默認值,從而導致后臺設置的此用戶組的簽名最大長度無效。 下面給出改進方法: 在source/plugin/qqconnect/connect.class.php文件里,搜索代碼: if(submitcheck('profilesubmit')) { $_G['group']['maxsigsize'] = $_G['group']['maxsigsize'] < 200 ? 200 : $_G['group']['maxsigsize']; return; } 注釋掉這段代碼。 同時搜索代碼: if($result['status'] == 0) { $js = 'a.onclick = function () { seditor_insertunit(/'sightml/', /'[wb='.$result['result']['username'].']'.$result['result']['signature_url'].'[/wb]/'); };'; } else { $js = 'a.onclick = function () { showDialog(/''.lang('plugin/qqconnect', 'connect_wbsign_no_account').'/'); };'; } 改為下面的代碼: if($_G['group']['maxsigsize'] > 200){ if($result['status'] == 0) { $js = 'a.onclick = function () { seditor_insertunit(/'sightml/', /'[wb='.$result['result']['username'].']'.$result['result']['signature_url'].'[/wb]/'); };'; } else { $js = 'a.onclick = function () { showDialog(/''.lang('plugin/qqconnect', 'connect_wbsign_no_account').'/'); };'; }