本文实例讲述了PHP 实现超简单的SESSION与COOKIE登录验证功能。分享给大家供大家参考,具体如下:
第一步,制作一个提交信息的表单页面
这里我不过多叙述,都能懂的
把他命名为login.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
39
40
41
42
43
44
45
46
47
48
49
|
<!DOCTYPE html>
<html>
<head>
<meta charset= "utf-8" >
<title>管理页面登录</title>
</head>
<body>
<form action= "index_do.php" method= "post" >
<table>
<tr>
<td>
用户身份:
</td>
<td>
<input type= "radio" name= "role" value= "admin" />管理员
<input type= "radio" name= "role" value= "teacher" />任职教师
<input type= "radio" name= "role" value= "student" />学生
</td>
</tr>
<tr>
<td>
<label>
用户:
</label>
</td>
<td>
<input type= "text" name= "name" />
</td>
</tr>
<tr>
<td>
<label>
密码:
</label>
</td>
<td>
<input type= "password" name= "pas" />
</td>
</tr>
<tr>
<td style= "text-align: center;" colspan= "2" >
<input type= "submit" name= "login" value= "登录" />
<input type= "reset" name= "reset" value= "取消" />
</td>
</tr>
</table>
</form>
</body>
</html>
|
第二步,制作一个接受表单信息并且进行判断的php文件
在同目录的文件夹里创建一个名为index_do.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
|
<?php
session_start(); //启用session
header( "Content-type:text/html;charset=utf-8" ); //设置编码格式为utf-8
date_default_timezone_set( 'PRC' ); //调整时区
//判断是否点击了登录按钮
if (isset( $_POST [ "login" ])) {
$name = $_POST [ "name" ]; //用户名
$pas = $_POST [ "pas" ]; //密码
$role = $_POST [ "role" ]; //用户身份
$time = date ( "Y:m:d H:i:s" ,time()); //获取登录时的时间
$ip = $_SERVER [ "SERVER_ADDR" ]; //接收ip位置
//判断是否为空
if ( $name == "" && $pas == "" ) {
echo "<script>alert('用户名和密码不能为空!')</script>" ;
header( "location:login.php" );
} else {
//判断用户身份是否为管理员
if ( $role == "admin" && $name == "Rarin" ) {
//如果是管理员,并且用户名是Rarin,那么则把他们输入进session里
$_SESSION [ "name" ] = $name ;
$_SESSION [ "pas" ] = $pas ;
$_SESSION [ "role" ] = $role ;
$_SESSION [ "ip" ] = $ip ;
$_SESSION [ "time" ] = $time ;
header( "location:index.php" . "?role=$role" ); //成功后返回index.php页面并保存role值
} elseif ( $pas == "2002" &&( $role == "teacher" || $role == "student" )) {
//不是管理员,是老师或者学生的时候,并且密码为2002,那么把他们输入进cookie里
setcookie( "name" , $name ,time()+3600); //创建cookie并给他输入值
setcookie( "pas" , $pas ,time()+3600);
setcookie( "role" , $role ,time()+3600);
setcookie( "ip" , $ip ,time()+3600);
setcookie( "time" , $time ,time()+3600);
header( "location:index.php" . "?role=$role" );
}
}
}
?>
|
第三步,创建一个信息文件
同目录下创建一个名为index.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
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<?php
session_start(); //启用session
header( "Content-type:text/html;charset=utf-8" );
date_default_timezone_set( 'PRC' ); //调整时区
?>
<!DOCTYPE html>
<html>
<head>
<title>登陆成功</title>
</head>
<body>
<?php
$role = $_GET [ "role" ]; //接收数据
//判断是否为管理员身份
if ( $role == "admin" ) {
//判断是否接收到了数据,有,则以SESSION方式登录
if (! empty ( $_SESSION [ "time" ])) {
//以session方式输出
echo "您好," . $_SESSION [ "name" ]. "<br>" ;
echo "您的密码:" . $_SESSION [ "pas" ]. "<br>" ;
echo "您的ip:" . $_SESSION [ "ip" ]. "<br>" ;
echo "SESSION登陆成功!您上次访问的时间是:" . $_SESSION [ "time" ]. "<br>" ;
echo "<form>
<input type= 'submit' name= 'unlink' value= '销毁' />
</form>";
} else {
echo "<script>alert('未登录!')</script>" ;
header( "location:login.php" );
}
} elseif ( $role == "teacher" || $role == "student" ) {
//判断是否接收到了数据,有,则以COOKIE方式登录
if (! empty ( $_COOKIE [ "time" ])) {
//以cookie方式输出
echo "您好," . $_COOKIE [ "name" ]. "<br>" ;
echo "您的密码:" . $_COOKIE [ "pas" ]. "<br>" ;
echo "您的ip:" . $_COOKIE [ "ip" ]. "<br>" ;
echo "COOKIE登陆成功!您上次访问的时间是:" . $_COOKIE [ "time" ]. "<br>" ;
echo "<form>
<input type= 'submit' name= 'unlinkCok' value= '销毁' />
</form>";
} else {
echo "<script>alert('未登录!')</script>" ;
header( "location:login.php" );
}
} else {
echo "<script>alert('非法用户!')</script>" ;
header( "location:login.php" );
}
?>
</body>
</html>
|
知识点:
1.session_start()函数启用session
2.date_default_timezone_set('PRC')调整为北京时间
3.$_SERVER["SERVER_ADDR"]接收ip地址
4.header("location:index.php"."?role=$role")将这个值保存到index.php文件里
希望本文所述对大家PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/weixin_44596681/article/details/88851523