UCHome中,关于用户退出过程的代码分析
今天来讲讲在UCHOME中关于用户退出这么一个动作是怎么实现的
首先我们看看用户退出链接的url:cp.php?ac=common&op=logout&uhash=c15638d1db1b3dfab9a3a22d7ec74210
从这个url中可以看出操作这个地址是文件是cp_common.php,打开这个文件,看看关于退出的代码
01.
<?php
02.
03.
/*
04.
[UCenter Home] (C) 2007-2008 Comsenz Inc.
05.
@author ymaozi
06.
@copyright http://www.codedesign.cn
07.
@uchome源码交流QQ群:83400263
08.
*/
09.
10.
$op
=
empty
(
$_GET
[
'op'
])?
''
:trim(
$_GET
[
'op'
]);
11.
12.
if
(
$op
==
'logout'
) {
13.
14.
if
(
$_GET
[
'uhash'
] ==
$_SGLOBAL
[
'uhash'
]) {
//$_SGLOBAL['uhash'],在common.php文件中设置,$_SGLOBAL['uhash'] = md5($_SGLOBAL['supe_uid']."\t".substr($_SGLOBAL['timestamp'], 0, 6));
15.
//删除session
16.
if
(
$_SGLOBAL
[
'supe_uid'
]) {
//获取当前用户的uid
17.
$_SGLOBAL
[
'db'
]->query(
"DELETE FROM "
.tname(
'session'
).
" WHERE uid='$_SGLOBAL[supe_uid]'"
);
//删除当前用户在session中的记录信息
18.
$_SGLOBAL
[
'db'
]->query(
"DELETE FROM "
.tname(
'adminsession'
).
" WHERE uid='$_SGLOBAL[supe_uid]'"
);
//如果是管理员,则删除admimsession中当前的用户信息
19.
}
20.
21.
if
(
$_SCONFIG
[
'uc_status'
]) {
//处理UC应用,同步登出,在common.php中进行定义
22.
include_once
S_ROOT.
'./uc_client/client.php'
;
23.
$ucsynlogout
= uc_user_synlogout();
24.
}
else
{
25.
$ucsynlogout
=
''
;
26.
}
27.
28.
clearcookie();
//清除cookie信息
29.
ssetcookie(
'_refer'
,
''
);
//将返回链接设置为空
30.
}
31.
showmessage(
'security_exit'
,
'index.php'
, 1,
array
(
$ucsynlogout
));
32.
33.
}
34.
35.
//function_common.php
36.
/**
37.
* 清空cookie与一些判断用户登录的信息
38.
*/
39.
function
clearcookie() {
40.
global
$_SGLOBAL
;
41.
42.
obclean();
//清除缓存
43.
ssetcookie(
'auth'
,
''
, -86400 * 365);
//设置cookie名为auth的过期
44.
$_SGLOBAL
[
'supe_uid'
] = 0;
45.
$_SGLOBAL
[
'supe_username'
] =
''
;
46.
$_SGLOBAL
[
'member'
] =
array
();
//将这些全局变量清空
47.
}
48.
?>
以上就是关于用户退出的一些代码的处理,有什么不明白的,可心到群里进行咨询