插件发布
| 插件名称: |
登录自动选择帐号功能 For Discuz! 7.2 |
| 插件来源: |
|
| 适用版本: |
Discuz! 7.2 |
| 语言编码: |
GBK简体 UTF8简体 BIG5繁体 |
| 最后更新时间: |
|
| 插件作者: |
KenT王健中文网 |
| 插件简介: |
为Discuz! 7.2 增加X1中的登录自动选择帐号功能,站点登录时的将自动按用户名、UID、E-mail逐一去匹配. |
本帖最后由 kentcn 于 2010-7-19 00:10 编辑
在X1中,新增了不少非常人性化的功能。登录自动选择帐号功能就是其中之一。
这个功能让登录变得更加简单,不用再去手动切换三种方式(UID,用户名,E-MAIL)。
直接输入即可使用自己喜欢的登录方式,实现登录。
下面是修改方法:
1.进入管理中心,在工具-数据库-优化里面执行这条SQL语句。- INSERT INTO `cdb_settings` VALUES ('autoidselect','1');
复制代码 2.在discuz根目录下,进入admin文件夹找到settings.inc.php并打开。
搜索- showsetting('settings_functions_other_pwdsafety', 'settingsnew[pwdsafety]', $settings['pwdsafety'], 'radio');
复制代码 在下面插入- showsetting('settings_functions_other_autoidselect', 'settingsnew[autoidselect]', $settings['autoidselect'], 'radio');
复制代码 3.进入include文件夹,找到login.func.php并打开。
搜索- function userlogin() {
- global $db, $tablepre, $_DCACHE, $ucresult, $username, $password, $questionid, $answer, $loginfield;
- require_once DISCUZ_ROOT.'./uc_client/client.php';
- if($loginfield == 'uid') {
- $isuid = 1;
- } elseif($loginfield == 'email') {
- $isuid = 2;
- } else {
- $isuid = 0;
- }
- $ucresult = uc_user_login($username, $password, $isuid, 1, $questionid, $answer);
- list($tmp['uid'], $tmp['username'], $tmp['password'], $tmp['email'], $duplicate) = daddslashes($ucresult, 1);
- $ucresult = $tmp;
- if($duplicate && $ucresult['uid'] > 0) {
- if($olduid = $db->result_first("SELECT uid FROM {$tablepre}members WHERE username='".addslashes($ucresult['username'])."'")) {
- require_once DISCUZ_ROOT.'./include/membermerge.func.php';
- membermerge($olduid, $ucresult['uid']);
- uc_user_merge_remove($ucresult['username']);
- } else {
- return 0;
- }
- }
- if($ucresult['uid'] <= 0) {
- return 0;
- }
- $member = $db->fetch_first("SELECT m.uid AS discuz_uid, m.username AS discuz_user, m.password AS discuz_pw, m.secques AS discuz_secques,
- m.email, m.adminid, m.groupid, m.styleid, m.lastvisit, m.lastpost, u.allowinvisible
- FROM {$tablepre}members m LEFT JOIN {$tablepre}usergroups u USING (groupid)
- WHERE m.uid='$ucresult[uid]'");
- if(!$member) {
- return -1;
- }
- $member['discuz_userss'] = $member['discuz_user'];
- $member['discuz_user'] = addslashes($member['discuz_user']);
- foreach($member as $var => $value) {
- $GLOBALS[$var] = $value;
- }
- if(addslashes($member['email']) != $ucresult['email']) {
- $db->query("UPDATE {$tablepre}members SET email='$ucresult[email]' WHERE uid='$ucresult[uid]'");
- }
- if($questionid > 0 && empty($member['discuz_secques'])) {
- $GLOBALS['discuz_secques'] = random(8);
- $db->query("UPDATE {$tablepre}members SET secques='$GLOBALS[discuz_secques]' WHERE uid='$ucresult[uid]'");
- }
- $GLOBALS['styleid'] = $member['styleid'] ? $member['styleid'] : $_DCACHE['settings']['styleid'];
- $cookietime = intval(isset($_POST['cookietime']) ? $_POST['cookietime'] : 0);
- dsetcookie('cookietime', $cookietime, 31536000);
- dsetcookie('auth', authcode("$member[discuz_pw]\t$member[discuz_secques]\t$member[discuz_uid]", 'ENCODE'), $cookietime, 1, true);
- dsetcookie('loginuser');
- dsetcookie('activationauth');
- dsetcookie('pmnum');
- $GLOBALS['sessionexists'] = 0;
- if($_DCACHE['settings']['frameon'] && $_DCOOKIE['frameon'] == 'yes') {
- $GLOBALS['extrahead'] .= '<script>if(top != self) {parent.leftmenu.location.reload();}</script>';
- }
- return 1;
- }
复制代码 替换成- function userlogin($username, $password, $questionid, $answer, $loginfield = 'username') {
- global $db, $tablepre, $_DCACHE, $ucresult;
- require_once DISCUZ_ROOT.'./uc_client/client.php';
- if($loginfield == 'uid') {
- $isuid = 1;
- } elseif($loginfield == 'email') {
- $isuid = 2;
- } elseif($loginfield == 'auto') {
- $isuid = 3;
- } else {
- $isuid = 0;
- }
- if($isuid == 3) {
- if(preg_match('/^[1-9]\d*$/', $username)) {
- $ucresult = uc_user_login($username, $password, 1, 1, $questionid, $answer);
- } elseif(isemail($username)) {
- $ucresult = uc_user_login($username, $password, 2, 1, $questionid, $answer);
- }
- if($ucresult[0] <= 0) {
- $ucresult = uc_user_login($username, $password, 0, 1, $questionid, $answer);
- }
- } else {
- $ucresult = uc_user_login($username, $password, $isuid, 1, $questionid, $answer);
- }
-
- list($tmp['uid'], $tmp['username'], $tmp['password'], $tmp['email'], $duplicate) = daddslashes($ucresult, 1);
- $ucresult = $tmp;
- if($duplicate && $ucresult['uid'] > 0) {
- if($olduid = $db->result_first("SELECT uid FROM {$tablepre}members WHERE username='".addslashes($ucresult['username'])."'")) {
- require_once DISCUZ_ROOT.'./include/membermerge.func.php';
- membermerge($olduid, $ucresult['uid']);
- if($olduid != $ucresult['uid']) {
- membermerge($olduid, $ucresult['uid']);
- }
- uc_user_merge_remove($ucresult['username']);
- } else {
- return 0;
- }
- }
- if($ucresult['uid'] <= 0) {
- return 0;
- }
- $member = $db->fetch_first("SELECT m.uid AS discuz_uid, m.username AS discuz_user, m.password AS discuz_pw, m.secques AS discuz_secques,
- m.email, m.adminid, m.groupid, m.styleid, m.lastvisit, m.lastpost, u.allowinvisible
- FROM {$tablepre}members m LEFT JOIN {$tablepre}usergroups u USING (groupid)
- WHERE m.uid='$ucresult[uid]'");
- if(!$member) {
- return -1;
- }
- $member['discuz_userss'] = $member['discuz_user'];
- $member['discuz_user'] = addslashes($member['discuz_user']);
- foreach($member as $var => $value) {
- $GLOBALS[$var] = $value;
- }
- if(addslashes($member['email']) != $ucresult['email']) {
- $db->query("UPDATE {$tablepre}members SET email='$ucresult[email]' WHERE uid='$ucresult[uid]'");
- }
- if($questionid > 0 && empty($member['discuz_secques'])) {
- $GLOBALS['discuz_secques'] = random(8);
- $db->query("UPDATE {$tablepre}members SET secques='$GLOBALS[discuz_secques]' WHERE uid='$ucresult[uid]'");
- }
- $GLOBALS['styleid'] = $member['styleid'] ? $member['styleid'] : $_DCACHE['settings']['styleid'];
- $cookietime = intval(isset($_POST['cookietime']) ? $_POST['cookietime'] : 0);
- dsetcookie('cookietime', $cookietime, 31536000);
- dsetcookie('auth', authcode("$member[discuz_pw]\t$member[discuz_secques]\t$member[discuz_uid]", 'ENCODE'), $cookietime, 1, true);
- dsetcookie('loginuser');
- dsetcookie('activationauth');
- dsetcookie('pmnum');
- $GLOBALS['sessionexists'] = 0;
- if($_DCACHE['settings']['frameon'] && $_DCOOKIE['frameon'] == 'yes') {
- $GLOBALS['extrahead'] .= '<script>if(top != self) {parent.leftmenu.location.reload();}</script>';
- }
- return 1;
- }
复制代码 4.进入templates\default 文件夹中,找到 admincp.lang.php并打开
搜索- 'settings_functions_other_pwdsafety_comment' => '选择“是”,论坛登录时的密码将进行加密后再传输',
复制代码 在下面增加- 'settings_functions_other_autoidselect' => '启用登录自动选择帐号',
- 'settings_functions_other_autoidselect_comment' => '选择“是”,站点登录时的将自动按用户名、UID、E-mail逐一去匹配',
复制代码 5.在templates\default 文件夹中,找到 templates.lang.php 并打开
搜索- 'message_ishidden_hiddenreplies' => '此帖仅作者可见',
复制代码 在下面增加6.在templates\default 文件夹中,找到login.htm并打开
搜索- <div class="float_typeid selectinput" id="account">
- <select name="loginfield" style="float:left;width:50px;" id="loginfield">
- <option value="username">{lang username}</option>
- <option value="uid">{lang uid}</option>
- <option value="email">{lang email}</option>
- </select>
- <input type="text" name="username" autocomplete="off" size="36" class="txt" tabindex="1" value="$username" />
- </div>
复制代码 替换成- <!--{if $autoidselect}-->
- <div class="float_typeid selectinput loginpsw" id="account">
- <label for="username">{lang login_id}</label>
- <input type="text" name="username" id="username" autocomplete="off" size="36" class="txt" tabindex="1" value="$username" />
- </div>
- <!--{else}-->
- <div class="float_typeid selectinput" id="account">
- <select name="loginfield" style="float:left;width:50px;" id="loginfield">
- <option value="username">{lang username}</option>
- <option value="uid">{lang uid}</option>
- <option value="email">{lang email}</option>
- </select>
- <input type="text" name="username" autocomplete="off" size="36" class="txt" tabindex="1" value="$username" />
- </div>
- <!--{/if}-->
复制代码 继续搜索- simulateSelect('loginfield');
复制代码 替换成- {if $autoidselect}
- showPrompt('username', 'focus', '{lang uid}/{lang username}/{lang email}', 0);
- {else}
- simulateSelect('loginfield');
- {/if}
复制代码 至此代码修改完毕。
7.进入后台,更新缓存后,进入全局-论坛功能-其它选项中可以看到新增加的启用登录自动选择帐号选项的开关。
默认已经开启了。如果想关闭这个功能,选择否,然后提交就可以了。
好了,全部修改完毕。现在Discuz! X1中全新的自动选择帐号功能已经被成功移植到Discuz! 7.2中了。
退出论坛,去登录下试试吧。
如果你没有修改过论坛的文件。可以使用下面的压缩包直接上传到论坛的根目录替换即可。
|
评分
-
2
查看全部评分
-
|