dedecms--二次开发之会员帐号过期无法登录

最近在二次开发织梦系统的会员功能;要求会员帐号有期限,开始时间以会员添加时间为开始,这样登录的时候需要判断帐号是否过期,原本的织梦系统中是通过$rs = $cfg_ml->CheckUser($userid,$pwd);来检查帐号信息的:

if($rs==0)
{
ResetVdValue();
ShowMsg("用户名不存在!", "index.php", 0, 2000);
exit();
}
else if($rs==-1) {
ResetVdValue();
ShowMsg("密码错误!", "index.php", 0, 2000);
exit();
}
else if($rs==-2) {
ResetVdValue();
ShowMsg("管理员帐号不允许从前台登录!", "index.php", 0, 2000);
exit();
}
else
{

//当$rs=1时会员帐号登录,但是一开始我对织梦的代码不是特别的熟悉,于是我是想着在这里判断帐号有没有过期,过期则提示会员帐号过期,联系管理员,但是测试的时候发现会提示会员帐号过期,但是同时过期的帐号还是会登录,后来我明白了其实在最上面检查帐号时,只要$rs=1时其实帐号就已经登录了,所以过期账号在下面这块判断是没有用的,必须在检查账号的那里判断;
// 清除会员缓存
$cfg_ml->DelCache($cfg_ml->M_ID);
if(empty($gourl) || preg_match("#action|_do#i", $gourl))
{
ShowMsg("成功登录,5秒钟后转向系统主页...","index.php",0,2000);
}
else
{
$gourl = str_replace('^','&',$gourl);
ShowMsg("成功登录,现在转向指定页面...",$gourl,0,2000);
}
exit();
}

分析过后的会员过期帐号不让登录的代码:

if($pwd=='')
{
ResetVdValue();
ShowMsg("密码不能为空!","-1",0,2000);
exit();
}

//判断帐号是否过期
$loginip = GetIP();
$arr=$dsql->GetOne("SELECT `exptime`,`jointime`,`loginip` FROM `#@__member` WHERE `userid` = '$userid' and `pwd`=md5($pwd) ");
$now=(time()-$arr['jointime'])/(24*3600);
if(!$arr){
ShowMsg("你输入的用户名和密码错误","-1",0,2000);
}else{
if($now<=$arr['exptime']){
$rs = $cfg_ml->CheckUser($userid,$pwd);
}else{
ShowMsg("登录失败,帐号过期,请联系管理员",'-1',0,2000);
exit();
}

}

在会员登录时还需要实现一个帐号不能再不同ip下登录;

if($rs==0)
{
ResetVdValue();
ShowMsg("用户名不存在!", "index.php", 0, 2000);
exit();
}
else if($rs==-1) {
ResetVdValue();
ShowMsg("密码错误!", "index.php", 0, 2000);
exit();
}
else if($rs==-2) {
ResetVdValue();
ShowMsg("管理员帐号不允许从前台登录!", "index.php", 0, 2000);
exit();
}

else
{
// 判断帐号是否登陆
$cfg_ml->DelCache($cfg_ml->M_ID);
if(empty($gourl) || preg_match("#action|_do#i", $gourl))
{

ShowMsg("成功登录,5秒钟后转向系统主页...","index.php",0,2000);
}
else
{
$gourl = str_replace('^','&',$gourl);
ShowMsg("成功登录,现在转向指定页面...",$gourl,0,2000);
}
$loginip = GetIP();
@session_start();//启动session
$_SESSION['userid'] = $userid;
$dsql->ExecuteNoneQuery("UPDATE @__member SET `login`='$loginip' WHERE `userid`='$userid'");
exit();
}
}

转载于:https://www.cnblogs.com/gaoxuqing/p/6923989.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值