phpcms sp4系统中管理员登陆的原理

简介: phpcms sp4系统是个不错的系统,后台的文件也安排的非常有序,一般是以file的参数的值为文件名+.inc.php文件,里面使用的是switch语句来响应不同的action大概上说下后台管理员的登录过程,实现的动作是使用login.inc.php文件 if($dosubmit){ require PHPCMS_ROOT.'languages/'.LANG.'/member.
phpcms sp4系统是个不错的系统,后台的文件也安排的非常有序,一般是以file的参数的值为文件名+.inc.php文件,里面使用的是switch语句来响应不同的action

大概上说下后台管理员的登录过程,实现的动作是使用login.inc.php文件

if($dosubmit)
{
	require PHPCMS_ROOT.'languages/'.LANG.'/member.lang.php';
	require PHPCMS_ROOT.'member/include/member.class.php';
	$member = new member();
	if(!isset($forward)) $forward = URL;
	if(!isset($checkcodestr)) $checkcodestr = '';
	if($code->check()) checkcode($checkcodestr, 1, HTTP_REFERER);
	$result = $member->login($username, $password);
 member类的实现文件在
member.class.php文件中


function login($username, $password, $cookietime = 0)
{
//...............
		if(!$cookietime) $get_cookietime = get_cookie('cookietime');
		$_cookietime = $cookietime ? intval($cookietime) : ($get_cookietime ? $get_cookietime : 0);
		$cookietime = $_cookietime ? TIME + $_cookietime : 0;
		$phpcms_auth_key = md5(AUTH_KEY.$_SERVER['HTTP_USER_AGENT']);
		$phpcms_auth = phpcms_auth($this->_userid."\t".$md5_password, 'ENCODE', $phpcms_auth_key);
		set_cookie('auth', $phpcms_auth, $cookietime);
		set_cookie('cookietime', $_cookietime, $cookietime);
//...............
}



后台的登录的过程是使用用户名检索出加密后的密码,然后与前台输入过来的密码,加密并进行比较,如果相同,那就设置"auth",cookie到前台,cookie中包含用户名与密码,加密过的然后转向到"?",也就是当前admin文件,

在admin.php中包含的include/common.inc.php中

$phpcms_auth = get_cookie('auth');
if($phpcms_auth)
{
	$auth_key = md5(AUTH_KEY.$_SERVER['HTTP_USER_AGENT']);
	list($_userid, $_password) = explode("\t", phpcms_auth($phpcms_auth, 'DECODE', $auth_key));
	$_userid = intval($_userid);
	$sql_member = "SELECT * FROM `".DB_PRE."member_cache` WHERE `userid`=$_userid";
	$r = $db->get_one($sql_member);
	if(!$r && cache_member())
	{
		$r = $db->get_one($sql_member);
	}
	if($r && $r['password'] === $_password)
	{
		if($r['groupid'] == 2)
		{
			set_cookie('auth', '');
			showmessage($LANG['userid_banned_by_administrator']);
		}
		@extract($r, EXTR_PREFIX_ALL, '');
	}
	else
	{
		$_userid = 0;
		$_username = '';
		$_groupid = 3;
		set_cookie('auth', '');
	}
	unset($r, $phpcms_auth, $phpcms_auth_key, $_password, $sql_member);
}


首页判断cookie("auth")是否有值,如果有值,先解密,找出userid,并在数据库上检索出password与当前的password是否相同,如果相同就通过,如果不同那就清除cookie,转向到登录界面

相关文章
|
SQL 存储
phpcms 2008 sp4的这个版本如何添加一个系统字段
phpcms中可以自定义模型,模型的共同字段在pc_content表中,其它的扩展字段在pc_c_这样的前缀中的表中, 自定义模型的过程如下:自定义一个模型,会使用一组创建表的sql,这个sql存储在include/amdin/model.sql这个文件中 每个字段都有以下属性,issystem,这个属性决定着是在主表还是在附表中,还有formtype这个表示在界面生成html的类型。
1232 0
|
数据库
phpcms sp4系统中内容分表管理实现
phpcms sp4系统是个不错的系统,后台的文件也安排的非常有序,一般是以file的参数的值为文件名+.inc.php文件,里面使用的是switch语句来响应不同的action,以内容管理为例子,内容管理的响应文件是content.inc.php文件 phpcms是可以自定义模型的,这样就涉及到分表的问题,phpcms的做法是将所有模块的主要内容如title,keyword,autho
1372 0
|
PHP
phpcms 2008 sp4的模板原理,tag的解析原理
phpcms中模板解析主要是通过global.func.php,的 function template($module = 'phpcms', $template = 'index', $istag = 0) { $compiledtplfile = TPL_CACHEPATH.$module.'_'.$template.'.tpl.php'; // echo "$compil
1153 0
Dede CMS 5.5 升级到 5.7 SP1
Dede CMS 5.5 的漏洞实在是太多了,三天两头被Hacker们挂马。话说挂这些破网址真的能带来丰厚的回报吗?做人要厚道啊。   闲话少说,我按照网上的升级到5.5升级到5.7不出错的方法,升级后编辑文章看起来没什么问题。
1336 0
|
SQL PHP 数据库
PHPCMS V9调用dz x1.5 论坛数据教程
摸索了个把月的V9,目前的功能大致了解了。建站前计划要整合DZ X1.5的,在论坛搜索方法已经实现了同步,但是对于论坛帖子调用还没有得到更多帮助,可能是因为太简单了,没有人去写,我就献丑整理一下吧。如果有用麻烦给我个顶,俺小学生需要鼓励。
1469 0
|
.NET 数据库 数据安全/隐私保护
|
JavaScript
phpcms 2008 sp4中一个表模型中不能出现两个地区的错误的修复
出现这个问题的原因是因为使用的了相同的js函数,函数名错误,导致了调用乱了,只要修改一个生成的界面的js就可以,最简单的办法,在函数上加入控件的ID,如何解决呢 在fields->areaid->form.inc.php中给函数加入控件的ID,最主要的是area_load与area_reload,这两个函数,修改完成后,还需要修改一下load.php这个文件,因为这个文件返回
1384 0

热门文章

最新文章