这篇文章主要介绍了PHP+MYSQL会员系统的开发实例教程,通过一个完整的会员系统开发,进一步加深对PHP+MySQL程序设计流程的认识,需要的朋友可以参考下
本文通过一个简单的实例完成了完整的PHP+MySQL会员系统功能。是非常实用的一个应用。具体实现步骤如下:
一、会员系统的原理:
登陆-->判断-->保持状态(Cookie或Session)-->验证状态及其权限
二、会员系统的安全:
1、学会使用常量提高md5安全性
2、Cookie/ Session 少用明文信息
3、Session安全性要大于Cookie
4、使用Cookie/ Session读取信息 尽量增加判断信息
5、Cookie/ Session内容要精简
6、对于错误信息及时销毁Cookie/ Session
三、数据库test,表user_list,及其字段
uid m_id username password
1 1 admin 291760f98414679e3fd3f9051b19b6f7
2 2 admin2 895785cfa5d8157f4d33c58ae0f55123
password:分别为md5(admintest100)、md5(admin2test100)即密码是与常量test100绑定后,再经过加密储存到数据库中的,这一步可以在注册时设置。
四、配置页面m_config.php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
session_start();
//数据库连接
$conn
=mysql_connect(
'localhost'
,
'root'
,
''
);
mysql_select_db(
'test'
,
$conn
);
//定义常量
define(ALL_ps,
"test100"
);
//查看登录状态与权限
function
user_shell(
$uid
,
$shell
,
$m_id
){
$sql
=
"select * from user_list where `uid`='$uid'"
;
$query
=mysql_query(
$sql
);
$us
=
is_array
(
$row
=mysql_fetch_array(
$query
));
$shell
=
$us
?
$shell
==md5(
$row
[username].
$row
[password].ALL_PS):FALSE;
if
(
$shell
){
if
(
$row
[m_id]<=
$m_id
){
//$row[m_id]越小权限越高,为1时权限最高
return
$row
;
}
else
{
echo
"你的权限不足,不能查看该页面"
;
exit
();
}
}
else
{
echo
"登录后才能查看该页"
;
exit
();
}
}
//设置登录超时
function
user_mktime(
$onlinetime
){
$new_time
=
mktime
();
echo
$new_time
-
$onlinetime
.
"秒未操作该页面"
.
"
;
if
(
$new_time
-
$onlinetime
>
'10'
){
//设置超时时间为10秒,测试用
echo
"登录超时,请重新登录"
;
exit
();
session_destroy();
}
else
{
$_SESSION
[times]=
mktime
();
}
}
?>
|
五、登录页面m_user.php:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
include
(
"m_config.php"
);
//echo md5("admin2".ALL_PS);
if
(
$_POST
[submit]){
$username
=
str_replace
(
" "
,
""
,
"$_POST[username]"
);
$sql
=
"select * from user_list where `username`='$username'"
;
$query
=mysql_query(
$sql
);
$us
=
is_array
(
$row
=mysql_fetch_array(
$query
));
$ps
=
$us
? md5(
$_POST
[password].ALL_PS)==
$row
[password] : FALSE;
if
(
$ps
){
$_SESSION
[uid]=
$row
[uid];
$_SESSION
[user_shell]=md5(
$row
[username].
$row
[password].ALL_PS);
$_SESSION
[times]=
mktime
();
//取得登录时忘该的时间
echo
"登录成功"
;
}
else
{
echo
"用户名或密码错误"
;
session_destroy();
//密码错误时消除所有的session
}
}
?>
用户名:
用户名:
验证码:
|
六、设置了权限及超时的页面m_zhuangtai.php:
1
2
3
4
5
6
7
8
9
10
11
12
|
include
(
"m_config.php"
);
$arr
=user_shell(
$_SESSION
[uid],
$_SESSION
[user_shell],1);
//设置该页面只有权限为1时即最高权限的才能访问
user_mktime(
$_SESSION
[times]);
//判断是否超时10秒
//echo $_SESSION[times]."
//echo mktime()."
//echo $arr[username]."
//echo $arr[uid]."
?>
|
有权限方能查看的内容
七、测试结果:
1、用sss,sssssss登录,提示:用户名或密码错误。查看m_zhuangtai.php,提示:登录后才能查看该页。
2、用admin admin登录后,因为权限为1,所以可以查看m_zhuangtai.php页面的内容。
3、用admin admin登录后,因为权限为1,所以可以查看m_zhuangtai.php页面的内容,但10秒后再刷新,提示:X秒未操作该页面 登录超时,请重新登录。
4、用admin2 admin2登录后,因为权限为2,所以无法查看m_zhuangtai.php页面的内容,提示:你的权限不足,不能查看该页面。
希望本文所述实例对大家PHP程序开发有所帮助。