让ECSHOP支持用手机号码登录、邮箱登录、Email登录-站长杂谈下载

让ECSHOP支持用手机号码登录、邮箱登录、Email登录

开通本站Svip会员,全站资源免费下
今天在网上看到一个帖子,讲的是“如何让ECSHOP也支持用邮箱登录、用手机号码登录”,
8 v4 B) l) j" {很多人跟帖说不能用,其实不是不能用,! H7 f$ ]  Y3 E2 w4 U5 U
而是楼主提供的方法有一定的局限性,. C/ ~7 X$ t3 V) t
就是“用户登录”页面必须“启用验证码”,楼主那个方法才好使。; s: F& q/ F+ G
0 E$ a8 Z' v3 r7 ]8 C9 F9 `- F$ |
今天“三个太阳(QQ: 2211707)”把他的代码完善了下,能够在任何情况下正常使用。
( n7 v: T2 y, ]$ P其实很简单,就是把那段代码换了个位置就OK了。下来有时间,三个太阳会把它做成ECSHOP插件形式共享给大家0 C- a6 G: j- o/ r. c3 o
以下是具体的方法:
8 u: O# V9 x) i  I7 f

4 ~5 ^, ^# h4 o0 C修改 User.php  文件
( y# f5 P- k3 I# A% V0 r
; F4 q4 c: B5 @  q0 C找到
; x! u# {2 Q2 _  b6 |1 q4 a9 H* M
- X3 J* g4 s7 S0 u; q
if ($user->login($username, $password,isset($_POST['remember'])))

' E3 Y* e$ x7 c1 p* u在它上边增加一段ECSHOP代码* n& o) N3 q5 X# q$ }0 H5 S3 D. H
0 O5 v7 O6 ]% a# [
if(is_email($username))" c: ^2 R) `& l3 P
{
: N" d5 Q3 \+ K! {) j* |$sql ="select user_name from ".$ecs->table('users')." where email='".$username."'";
0 x# X: h1 A2 K1 e1 A& X2 T& P$username_e = $db->getOne($sql);+ m! W5 H' \0 k+ s6 X- Z- T5 x
if($username_e) $username=$username_e;& B/ g. Y4 L' K7 d# P
}3 ]; d) M% c, H, W3 B
if(is_telephone($username))
/ N# y" R1 u8 M# k{
# O4 [, x3 f* \1 Z' F$sql ="select user_name from ".$ecs->table('users')." where mobile_phone='".$username."'";) d  C3 G  m/ x9 I! P6 D% v6 t% V
$username_e = $db->getOne($sql);' f) R+ {& |5 o; F8 s' m" X
if($username_e) $username=$username_e;  }6 u. C5 C0 Q7 t
}

6 P( ]4 ?- a, K. O5 {6 C3 A9 a! k8 p* V3 K0 k$ ?' Z" t7 M
继续在 user.php 的底部再增加一段代码" g3 v+ t: w% h; z% m3 q
- |& c0 m' f6 d0 G
% p: ]! D" I% t/ N
function is_telephone($phone){9 M& t& q% w; A' D+ G4 _
$chars = "/^13[0-9]{1}[0-9]{8}$|15[0-9]{1}[0-9]{8}$|18[0-9]{1}[0-9]{8}$/";7 s* Q- u+ |2 [/ N0 G" z* o
if (preg_match($chars, $phone)){
% a) Y* W: j; z+ Z4 Z" x; qreturn true;" X% d2 |* s. T. E$ ~
}
3 P/ \) F; d5 l5 d5 N3 P}
9 r1 v- s: r3 }3 ~4 C
这样修改以后,即使你没启用验证码,也是OK的。感兴趣的朋友可以测试下。, a7 C4 H( Q5 M2 d8 ?% B

) x( `9 R* X; G" ~不过这个代码还是有一定的BUG的,
  G0 G) M( d  A0 n* q/ U因为ECSHOP注册用户的时候,手机号码没有验证唯一性,
# f( \' f# t2 Z, _% g8 }5 ]所以数据库中有可能存在不同用户名,同一个手机号的情况。
7 q& o. y+ G$ r; X! X" I. Z我们可以进一步修改ECSHOP代码,实现注册时验证手机的唯一性,
* h/ e+ K/ j) @7 v' o: f6 x如果再能用短信形式验证手机的真实性,就更完美了,这只是后话,期待更完善。
9 p% o2 }0 e) B; J5 G

全部评论 0

您需要登录后才可以回帖 立即登录
登录
0
0
0
返回顶部