本帖最后由 选峰工作室 于 2009-6-14 23:52 编辑
logging.php
DZ60中查找- $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.adminid, m.groupid, m.styleid AS styleidmem, m.lastvisit, m.lastpost, u.allowinvisible
- FROM {$tablepre}members m LEFT JOIN {$tablepre}usergroups u USING (groupid)
- WHERE m.$field='$username'");
复制代码 DZ61中查找
- $ucresult = uc_user_login($username, $password, $loginfield == 'uid');
复制代码 DZ70中查找- $ucresult = uc_user_login($username, $password, $loginfield == 'uid', 1, $questionid, $answer);
复制代码 在DZ版本的代码的上一行,加以下代码即可实现。- //启用邮箱登陆,选峰工作室,yxfstudio.cn
- if(isemail($username)) $username=$db->result_first("SELECT `username` FROM `{$tablepre}members` WHERE `email` LIKE '$username' limit 0,1");
- //启用邮箱登陆,选峰工作室,yxfstudio.cn
复制代码 这个有一个问题就是,如果会员是使用邮箱名来注册用户名的话,那么,用此邮箱名称登陆可能会登陆到另一个以此为邮箱的用户上,假设这个存在的话。虽然这种冲突的概率很小,但是存在。但是,不用太担心,不同用户一般密码不同!除非A用户的用户名为B用户的邮箱,且A用户的密码与B用户的密码相同,则B用户用邮箱登陆的时候,会进入A用户的账号上。
解决的方法是在登陆的时候再加一个选项,使用邮箱登陆,并在代码里加个判断,才是正确的方法,这个只是个简单的解决办法。
哪天有空的时候我更新一下。 |