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();
}
}
dedecms--二次开发之会员帐号过期无法登录的更多相关文章
- 技术贴:asp.net实现唯一账户在线 禁止同一帐号同时在线 asp.net实现您的帐号在别处登录,您已被迫下线!
技术要点: Application 全局变量的使用 hashtable 的使用 Session 对应唯一sessionID 标志会话状态 webpage 继承 BasePage的技术 整体比较简单,主 ...
- Python爬虫获取迅雷会员帐号
代码如下: import re import urllib.request import urllib import time from collections import deque head = ...
- dedecms二次开发
安装遇到的问题 修改文件如下 1.date目录下的config.cache.bak.php改成config.cache.php 2install目录下的index.html.install_lock. ...
- Ubuntu 14.04 为 root 帐号开启 SSH 登录
1. 修改 root 密码 sudo passwd root 2. 以其他账户登录,通过 sudo nano 修改 /etc/ssh/sshd_config : xxx@ubuntu14:~$ su ...
- Ubuntu 16.04 为 root 帐号开启 SSH 登录
1.先用普通账号登录 2.安装 open ssh: sudo apt-get install openssh-server 3.修改密码: sudo passwd root 4.切换到root账户 s ...
- Ubuntu 为 root 帐号开启 SSH 登录
1. 修改 root 密码sudo passwd root 2. 以其他账户登录,通过 sudo nano 修改 /etc/ssh/sshd_config :xxx@ubuntu:~$ su - ro ...
- dedecms--二次开发文章内容页未登录禁止访问和同一个帐号只允许一个ip登录
最近在用dedecms二次开发会员功能,领导要求,会员未登录不允许访问文章内容页,和同一个账号只允许一个ip登录,我是将这两个在一起判断的,判断session存不存在,不存在的情况下就是未登录,这时候 ...
- 最好最实用的PHP二次开发教程
◆二次开发 1.什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一般来说都不会改变原有系统的内核. 2.为什么要二次开发? 随着信息化技术 ...
- 申请LINE 帐号的所有方法
如果你打算用LINE 交朋友或是做行销,你就必须先要拥有一个甚至许多个LINE 帐号.在本篇文章中,将分享给你目前申请LINE 帐号的所有可能方法. 目前LINE 公司允许大家使用以下二种身分申请LI ...
随机推荐
- 04Windows中的字符类型
1. Windows 中常用的数据类型定义 //WinNt.h中定义 typedef unsigned short wchar_t; //A 16-bit character typedef char ...
- Java 编辑html模板并生成pdf
1.工具类 import com.hujiang.project.zhgd.Util; import com.itextpdf.text.BaseColor; import com.itextpdf. ...
- Python基础(五)——闭包与lambda的结合
(1)变量的域 要了解闭包需要先了解变量的域,也就是变量在哪一段“上下文”是有效的(类似局部变量和全局变量的区别),举一个很简单的例子.(例子不重要,就是涉及闭包就要时刻关注这个域) def test ...
- AND和OR
AND和OR用于组合多个选择条件,即用于组合where之中的多个条件
- Linux学习-X Server 配置文件解析与设定
X server 的配置 文件都是预设放置在 /etc/X11 目录下,而相关的显示模块或上面提到的总总模块,则主要放置在/usr/lib64/xorg/modules . 比较重要的是字型文件与芯片 ...
- Android工具 Hierarchy Viewer 分析
Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat.它是Android自带的非常有用而且使用简单的工具,可以帮助我 ...
- luogu3390 【模板】矩阵快速幂
#include <iostream> #include <cstdio> using namespace std; typedef long long ll; ll k; c ...
- LiveScript 流程控制、循环以及列表推导式
The LiveScript Book The LiveScript Book Generators and Yield 你可以在你的 LiveScript 代码中使用 Ecmascript ...
- 【bzoj4319】cerc2008 Suffix reconstruction 贪心
题目描述 话说练习后缀数组时,小C 刷遍 poj 后缀数组题, 各类字符串题闻之丧胆.就在准备对敌方武将发出连环杀时,对方一记无中生有,又一招顺手牵羊,小C 程序中的原字符数组就被牵走了.幸运的是,小 ...
- 【bzoj4004】[JLOI2015]装备购买 贪心+高斯消元求线性基
题目描述 脸哥最近在玩一款神奇的游戏,这个游戏里有 n 件装备,每件装备有 m 个属性,用向量zi(aj ,.....,am) 表示 (1 <= i <= n; 1 <= j < ...