Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

支持 使用email登录或者用户名均可登录

[复制链接]
darkeyes 发表于 2008-6-9 18:08:44 | 显示全部楼层 |阅读模式
演示 豫内网www.371City.com

做了个小修改 让uch可以用email或者用户名登陆

看 了 LuciferSheng 的 用EMAIL登录,可对我不实用。因为我想让用户 用EMAIL或者用户名登录都可以。

简单的修改一下,即可实现此功能。

原则是 先判断 用户登录输入的 “用户名” 是 不是EMAIL。若是,判断,然后调出用户名。若不是正常按照用登录

感谢13楼提醒,验证 4位的域名了。



  1. 原if(eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$email)) {   
复制代码
修改为
  1. if(eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$email)) {
复制代码


do_login.php


  1. if($_SCONFIG['seccode_login']) {
复制代码
上面添加以下代码:(更正版)

  1.   function checkemail($email) {
  2.     if(!trim($email) == "") {
  3.         if(eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$email)) {
  4.             $result =1;
  5.             return $result;
  6.                 }
  7.         }
  8. }

  9.     if (checkemail($username))
  10.         {
  11.         $email = $username;
  12.         $query = $_SGLOBAL['db']->query("SELECT username FROM uc_members WHERE email='$email'");
  13.         $info = $_SGLOBAL['db']->fetch_array($query);
  14.         $username = $info['username'];
  15.         }
复制代码



上传,即可


以上代码存在一个问题。就是当用户修改自己的EMAIL后,再用EMAIL就不能登录,这是因为用户修改后的EMAIL和注册EMAIL存的表是不一样的。这是后来才发现的。 程序更新如下。以前照着上面方法修改过的朋友,请用下面最新的代码!谢谢!(请将以前修改的代码全部删除!)

1、注意:如果你安装的时候,默认安装的,就不用动代码。如果手工修改过,并自行修改为自己的表前缀!用到uchome_spacefield 和uc_members 两个表。请对照自己的表前缀,自行修改。以下代码目前适用于UCHOME和UCENTER 安装在同一数据库的情况


在source/do_login.php 中查找
  1. if($_SCONFIG['seccode_login']) {
复制代码
,在上面添加以下代码!




  1.     if(eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$username))
  2.         {
  3.                      $email = $username;
  4.         
  5.             $query1 = $_SGLOBAL['db']->query("SELECT uid FROM uchome_spacefield  WHERE email='$email'");
  6.                     $info1 = $_SGLOBAL['db']->fetch_array($query1);
  7.            $uid = $info1['uid'];
  8.                
  9.                if(empty($uid))
  10.                 {
  11.         $query = $_SGLOBAL['db']->query("SELECT username FROM uc_members WHERE email='$email1'");
  12.                $info = $_SGLOBAL['db']->fetch_array($query);
  13.                $username = $info['username'];
  14.                 }
  15.                 else
  16.                 {
  17.            $query = $_SGLOBAL['db']->query("SELECT username FROM uc_members WHERE uid='$uid'");
  18.            $info = $_SGLOBAL['db']->fetch_array($query);
  19.            $username = $info['username'];
  20.                 }
  21.            }

复制代码



2、如果你的UCHOME 和UCENTER安装在不同库,请在上面代码的基础上做以下修改:
以下方法:
如 uc_members 安装在A库
uchome_spacefield 安装在B库。


可修改如下代码
$query1 = $_SGLOBAL['db']->query("SELECT uid FROM B.uchome_spacefield  WHERE B.uchome_spacefield.email='$email'"); //(此处前面的B可不加)

$query = $_SGLOBAL['db']->query("SELECT A.uc_members.username FROM A.uc_members WHERE A.uc_members.email='$email1'");

$query = $_SGLOBAL['db']->query("SELECT A.uc_members.username FROM A.uc_members WHERE A.uc_members.uid='$uid'");

不明白如何修改的。可直接下载附件(附件为安装同一库的情况)

[ 本帖最后由 darkeyes 于 2008-6-14 09:58 编辑 ]

评分

1

查看全部评分

5to20 发表于 2008-6-9 18:12:50 | 显示全部楼层
回复

使用道具 举报

 楼主| darkeyes 发表于 2008-6-9 18:20:34 | 显示全部楼层
顶一下
回复

使用道具 举报

eqmz 发表于 2008-6-9 18:21:12 | 显示全部楼层
回复

使用道具 举报

 楼主| darkeyes 发表于 2008-6-9 18:39:15 | 显示全部楼层
安装的人 说一声。

有问题反馈
回复

使用道具 举报

zhouen 发表于 2008-6-9 18:40:45 | 显示全部楼层
如果注册后人家改了相同的邮箱,那怎么登录?
回复

使用道具 举报

 楼主| darkeyes 发表于 2008-6-9 18:47:36 | 显示全部楼层
原帖由 zhouen 于 2008-6-9 18:40 发表
如果注册后人家改了相同的邮箱,那怎么登录?




以最后注册的 EMAIL。最后注册的那个人可以登录。前面注册的不可以登录
回复

使用道具 举报

superwyh 发表于 2008-6-9 19:13:42 | 显示全部楼层
好东西!!!!!!
回复

使用道具 举报

seadevil 发表于 2008-6-9 19:17:20 | 显示全部楼层
这样最好绑定邮箱验证
回复

使用道具 举报

zhouen 发表于 2008-6-9 19:19:33 | 显示全部楼层

回复 7# darkeyes 的帖子

那这样的话,除非邮箱验证才算完善,修改邮箱也需要验证
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 12:30 , Processed in 0.037173 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表