文档章节

ECShop支持用户名、邮箱或手机号码登录

Android1989
 Android1989
发布于 2014/08/04 16:36
字数 558
阅读 969
收藏 0

两个方法都测试成功

一、这个方法是么偶有修改原来的代码实现:

1,找到user.php 的以下代码

if (empty($_POST['captcha']))
        {
            show_message($_LANG['invalid_captcha'], $_LANG['relogin_lnk'], 'user.php', 'error');
        }

回车添加一下代码即可:

if(is_email($username))
		{
		$sql ="select user_name from ".$ecs->table('users')." where email='".$username."'";
		$username_e = $db->getOne($sql);
		if($username_e) $username=$username_e;
		}
		if(is_telephone($username))
		{
		$sql ="select user_name from ".$ecs->table('users')." where mobile_phone='".$username."'";
		$username_e = $db->getOne($sql);
		if($username_e) $username=$username_e;
		}

为了避免方法之前冲突可以直接把这段代码放在user.php文件的最后位置;

function is_telephone($phone){
$chars = "/^13[0-9]{1}[0-9]{8}$|15[0-9]{1}[0-9]{8}$|18[0-9]{1}[0-9]{8}$/";
if (preg_match($chars, $phone)){
return true;
}
}

自己可以去个人中心进行完善个人信息,然后就大功告成了!

二、这个方法是改了自己的登陆方法后上面的方法实现不了了,然后这个方法实现了

1.将原来的登录代码

if ($user->login($username, $password,isset($_POST['remember'])))
    {
        update_user_info();
        recalculate_price();

        $ucdata = isset($user->ucdata)? $user->ucdata : '';
        show_message($_LANG['login_success'] . $ucdata , array($_LANG['back_up_page'], $_LANG['profile_lnk']), array($back_act,'user.php'), 'info');
    }
    else
    {
        $_SESSION['login_fail'] ++ ;
        show_message($_LANG['login_failure'], $_LANG['relogin_lnk'], 'user.php', 'error');
    }

替换成下面的代码

if(is_email($username))
    {
        $sql = 'SELECT user_name FROM'.$ecs->table('users').
        "WHERE email = '$username' LIMIT 1";
        $username = $db->getOne($sql);
        if ($user->login($username, $password,isset($_POST['remember'])))
        {
            update_user_info();
            recalculate_price();
            $ucdata = isset($user->ucdata)? $user->ucdata : '';
            show_message($_LANG['login_success'] . $ucdata , array($_LANG['back_up_page'], $_LANG['profile_lnk']), array($back_act,'user.php'), 'info');
        }
        else
        {
            $_SESSION['login_fail'] ++ ;
            show_message($_LANG['login_failure'], $_LANG['relogin_lnk'], 'user.php', 'error');
        }
    }
    else if(is_mobile($username))
    {
        $sql = 'SELECT user_name FROM'.$ecs->table('users').
        "WHERE mobile_phone = '$username' LIMIT 1";
        $username = $db->getOne($sql);
        if ($user->login($username, $password,isset($_POST['remember'])))
        {
            update_user_info();
            recalculate_price();
            $ucdata = isset($user->ucdata)? $user->ucdata : '';
            show_message($_LANG['login_success'] . $ucdata , array($_LANG['back_up_page'], $_LANG['profile_lnk']), array($back_act,'user.php'), 'info');
        }
        else
        {
            $_SESSION['login_fail'] ++ ;
            show_message($_LANG['login_failure'], $_LANG['relogin_lnk'], 'user.php', 'error');
        }
    }
    else
    {
        if ($user->login($username, $password,isset($_POST['remember'])))
        {
            update_user_info();
            recalculate_price();
            $ucdata = isset($user->ucdata)? $user->ucdata : '';
            show_message($_LANG['login_success'] . $ucdata , array($_LANG['back_up_page'], $_LANG['profile_lnk']), array($back_act,'user.php?act=profile'), 'info');
        }
        else
        {
            $_SESSION['login_fail'] ++ ;
            show_message($_LANG['login_failure'], $_LANG['relogin_lnk'], 'user.php', 'error');
        }
    }

2.在user.php添加下面这个函数

function is_mobile($user_mobile)
{
$regex = "/13[0-9]{8}|15[0|1|2|3|5|6|7|8|9]\d{8}|18[0|5|6|7|8|9]\d{8}/";
$user_mobile = trim($user_mobile);
if(preg_match($regex,$user_mobile))
{ 
return true;
} 
else 
{

return false;
 
}
}


© 著作权归作者所有

共有 人打赏支持
Android1989
粉丝 7
博文 170
码字总数 98628
作品 0
朝阳
私信 提问
ecshop支持手机号码登录、邮箱登录

ecshop支持手机号码、邮箱登陆只要几行代码就搞定了 修改 User.php 文件 找到: if ($user->login($username, $password,isset($_POST['remember']))) 在它上边增加一段我们所要能用手机或者...

路边拾草人
2011/12/14
0
0
ECShop 2.7.2 最新任意用户登陆漏洞

由于最近项目需要, 查看了下商派最新发布的ECShop 2.7.2正式版的源代码, 没想到在看到第二个文件时就发现了一处比较明显, 且低级漏洞。这个漏洞可以让任何人以任何用户身份登录到ECShop前台!...

沱长
2010/05/05
5.6K
5
整合 ECShop2.7.2 与 Discuz!6.0

1. 安装ECShop2.7.2 a) 推荐配置:LAMP(Linux+Apache+Mysql+PHP) 操作系统:Linux (支持Unix/FreeBSD/Solaris/Windows NT(2000/2003)等操作系统) WEB服务器:Apache (支持httpd, Zeus, II......

鉴客
2011/09/21
705
0
ecshop 完美解决动态ip登录超时和购物车清空问题

ECSHOP模板/ecshop开发中心(www.68ecshop.com) / 2014-05-06 前一段时间,ECSHOP开发中心的一个客户说自己的ecshop网店出了状况,就是有时候登录的时候会自动退出。而且购物车也没规律的会清...

thinkyoung
2015/06/24
0
0
ECSHOP登录自动退出问题解决

最近进行ecshop二次开发,可以说是碰到了很多问题,最让人苦恼的是ecshop会员登录和管理员登录不了后台,或者是登录之后就自动退出。 一般这种情况在本地是好好的,为什么上传到服务器就不行...

skq
2013/06/08
0
1

没有更多内容

加载失败,请刷新页面

加载更多

VI 编辑器快捷键

vi编辑器工作模式 命令模式 输入模式 末行模式 命令模式 光标移动键:h:左 j:下 k:上 l:右 7h:光标向左7个字符,同理5j:光标向下移动5个字符 w :移动到下一个单词的词首 2w : 向后跳转2个单...

ZeroneLove
22分钟前
0
0
2018个人年终总结

感谢领导的信任和指导,新的一年获得了很多成长和提高,改掉了很多不好的习惯。 在这一年里,我在领导的帮助下,主要完成了以下功能: 1、完成上海银行版本投资营销相关功能的开发。 2、完成车...

万山红遍
今天
4
0
保密工作与linux系统的发展

保密工作从性质上可以分成商业方面的保密和国家安全方面的保密。由于自己从事的是IT方面的工作,工作中必然会接触涉及到计算机信息方面的相关文件。加上单位已近通过武器装备科研生产单位二级...

linux-tao
今天
1
0
Spark共享变量

概述 Spark程序的大部分操作都是RDD操作,通过传入函数给RDD操作函数来计算。这些函数在不同的节点上并发执行,但每个内部的变量有不同的作用域,不能相互访问,所以有时会不太方便,Spark提...

仟昭
今天
2
0
java基础的几个算法

一般对于排序算法我们通常考虑: 是否稳定(相同值的两个数位置是否会变) 和 时间复杂度(算法执行次数的规模量级)。至于说空间复杂度(算法在运行过程中临时占用存储空间大小的量度)其实...

noob_fly
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部