[Discuz!插件] DISCUZ 昵称[注册、显示、唯一性]解决方案

[复制链接]

[Discuz!插件] DISCUZ 昵称[注册、显示、唯一性]解决方案[复制链接]

星辰投稿 发表于 2013-10-22 17:07:59 [显示全部楼层] |阅读模式 回复:  0 浏览:  6474
以下是详细的设置步骤:
1、在管理员后台—用户—用户栏目-栏目列表里,点击[自定义字段1]最后的编辑
在打开的页面里:做如下设置
栏目名称:昵称
栏目介绍:请输入昵称,一经注册不允许修改
表单类型:单行文本框
是否启用:是
提交后不可修改:是
是否必填:是
是否在注册页面显示:是
是否在名片中显示:是
其它项目默认:点击提交保存。

换个浏览器打开注册页,验证下是否显示昵称项了。

2、打开source\language\lang_message.php,改完后提交至服务器
加入:
  1. <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">'profile_nickname_tooshort' => '抱歉,您输入的昵称小于 3 个字符,请输入一个较长的用户名',</span>
  2. <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">'profile_nickname_toolong' => '抱歉,您输入的昵称超过 15 个字符,请输入一个较短的用户名',</span>
  3. <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">'profile_nickname_duplicate' => '该昵称已被注册',</span>
复制代码


3、打开source\module\forum\forum_ajax.php,改完后提交至服务器
  1. 在跟if($_GET['action'] == 'checkusername')平级的if/else分支中,加入:
  2. elseif ($_GET['action'] == 'checknickname') {
  3. $nickname = trim($_GET['nickname']);
  4. $nicknamelen = dstrlen($nickname);
  5. if($nicknamelen < 3) {
  6. showmessage('profile_nickname_tooshort', '', array(), array('handle' => false));
  7. } elseif($nicknamelen > 15) {
  8. showmessage('profile_nickname_toolong', '', array(), array('handle' => false));
  9. }
  10. if(C::t('common_member_profile')->count_by_field('field1', $nickname) == 0) {
  11. //showmessage('<img src="'.$_G['style']['imgdir'].'/check_right.gif" width="13" height="13">', '', array(), array('msgtype' => 3));
  12. } else {
  13. showmessage('register_check_found', '', array(), array('handle' => false));
  14. }
  15. }
复制代码

4、打开static\js\register.js,改完后提交至服务器
  1. 加入一个函数:
  2. function checknickname(id) {
  3. errormessage(id);
  4. var username = trim($(id).value);
  5. if($('tip_' + id).parentNode.className.match(/ p_right/) && (username == '' || username == lastusername)) {
  6. return;
  7. } else {
  8. lastusername = username;
  9. }
  10. if(username.match(/<|"/ig)) {
  11. errormessage(id, '昵称包含敏感字符');
  12. return;
  13. }
  14. var unlen = username.replace(/[^\x00-\xff]/g, "**").length;
  15. if(unlen < 3 || unlen > 15) {
  16. errormessage(id, unlen < 3 ? '昵称不得小于 3 个字符' : '昵称不得超过 15 个字符');
  17. return;
  18. }
  19. var x = new Ajax();
  20. $('tip_' + id).parentNode.className = $('tip_' + id).parentNode.className.replace(/ p_right/, '');
  21. x.get('forum.php?mod=ajax&inajax=yes&infloat=register&handlekey=register&ajaxmenu=1&action=checknickname&nickname=' + (BROWSER.ie && document.charset == 'utf-8' ? encodeURIComponent(username) : username.replace(/%/g, '%25').replace(/#/g, '%23')), function(s) {
  22. errormessage(id, s);
  23. });
  24. }
  25. 在addFormEvent这个函数里,找到
  26. formNode[stmp[0]].onblur = function () {
  27. checkusername(formNode[stmp[0]].id);
  28. };
  29. 在后面加入:
  30. formNode[8].onblur = function () {
  31. checknickname(formNode[8].id);
  32. };
复制代码

第二个问题:帖子列表页显示昵称
1、打开source\module\forum\forum_forumdisplay.php
查找
  1. foreach($threadlist as $thread) {
复制代码


在下一行加入
  1. <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">$thread['author_profile'] = C::t('common_member_profile')->fetch($thread['authorid']);</span>
  2. <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">$lastpostuser = C::t('common_member')->fetch_by_username($thread['lastposter']);</span>
  3. <span style="font-family: Tahoma, Helvetica, SimSun, sans-serif; ">$thread['lastposter_profile'] = C::t('common_member_profile')->fetch($lastpostuser['uid']);</span>
复制代码
2、打开template\default\forum\forumdisplay_list.htm
如果使用其他模板,请替换default为实际模板的路径
查找
  1. $thread[author]
复制代码

替换成
  1. $thread[author_profile]['field1']
复制代码


查找
  1. $thread[poster]
复制代码

替换成
  1. $thread[lastposter_profile]['field1']
复制代码
到这里,注册的时候输入昵称后可以提示昵称是否被占用了。
但是会有个问题,如果还继续点提交注册的话,还是可以注册成功的。。。。。

转载请说明出处,本文地址:https://www.xcadmin.com/thread-1644-1-1.html
无限星辰工作室  好集导航 Discuz全集下载  星辰站长网  集热爱361  一品文学  手机小游戏合集   海外空间网 星辰api  星辰支付二维码管理平台 阿里云服务器 腾讯云服务器
服务Discuz!建站|DiscuzQ配置|二开|小程序|APP|搬家|挂马清理|防护|Win/Linux环境搭建|优化|运维|
服务理念:专业 诚信 友好QQ842062626 服务项目 Q群315524225
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

熟练

7

主题

445

帖子

1332

积分

熟练

Rank: 3Rank: 3

站长币
887
主机金
0
威望
0
贡献值
0
阅读权限
30
积分
1332

最新帖子

  • 爱好编辑 爱好编辑 5月8日

    KX-6000G 在3D Mark11中显示核显型号为ZX C1080,P分为1046,对比之前的C960大约250-2

    帖子: 兆芯KX-6000G 发布 3倍GPU性能提升

  • 爱星辰 爱星辰 5月8日

    在index首页增加客服代码及一键拨打电话 1.index.wxss或者app.wxss文件里增加样式

    帖子: 微信小程序增加悬浮在线客服

  • 星辰网编 星辰网编 5月8日

    据外媒报导,本周一(10月5日)在印度产生一同悲惨剧,35只猕猴打群架撞塌民房,导致

    帖子: 印度35只猴子打群架撞塌民房

  • 拖动客服框
    Online Service
    点击这里给我发消息
    点击这里联系我们
    微信扫一扫
    在线客服

    Archiver|手机版|小黑屋|星辰资讯网

    © 2015-2020 Comsenz Inc.  Powered by Discuz! X3.4

    1
    QQ