一、简单首页
<?php
echo '<h1><a href="User/login_html.php">登录</a></h1>';
echo '<h1><a href="User/newUser_html.php">注册</a></h1>';
页面效果:
点击登录后进入到登录页面
二、登录页面
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>登录页面</title>
</head>
<body align="center">
<div id="all">
<h4>欢迎!请登录</h4>
<br>
<form action="CheckUser.php" method="post">
账号:<input type="text" name="username" id="" placeholder="请输入账号" />
<br>
密码:<input type="password" name="password" id="" placeholder="请输入密码" />
<br><br>
<input type="submit" name="" id="" value="登录"/>
</form>
</div>
</body>
</html>
页面效果:
输入代码中为测试预设的账号(admin)和密码(123456)后进入到SESSION、COOKIE的设定和用户验证页面
三、用户验证,SESSION、COOKIE设置
1、停留在该页面进行SESSION、COOKIE值的检查
<?php
//查看接收到的POST数据
print_r($_POST);
echo '<br>';
//定义用户名和密码变量进行存放
$username = $_POST['username'];
$password = $_POST['password'];
//定义准备存放进COOKIE的值
$token = md5($username.$password.time());
//开启SESSION功能
session_start();
if (!empty($username) && !empty($password)){
if ($username == 'admin' && $password == '123456'){
//定义COOKIE
setcookie('Token',$token,time()+3600);
$_COOKIE['Token'] = $token;
echo '登录成功!当前的COOKIE值为:'.$_COOKIE['Token'];
echo '<br>';
//定义SESSION
$_SESSION[$token]=[
'username'=>$username,
'password'=>$password
];
echo '当前的SESSION值为:';
print_r($_SESSION);
echo '<br>';
//进入用户中心
echo '<a href="user_center.php">用户中心</a>';
}else{
echo '用户名或密码错误,请<a href="login_html.php">重试</a>';
}
}else{
echo '用户名或密码为空,请<a href="login_html.php">重试</a>';
}
页面效果:
2、优化代码,利用js实现自动跳转,该页面仅进行弹窗提示后离开
<?php
//查看接收到的POST数据
//print_r($_POST);
echo '<br>';
//定义用户名和密码变量进行存放
$username = $_POST['username'];
$password = $_POST['password'];
//定义准备存放进COOKIE的值
$token = md5($username.$password.time());
//开启SESSION功能
session_start();
//定义变量存放登录是否成功的判断结果
$flag = false;
//定义变量存放登录是否成功的提示信息
$message = '';
//进行登录判断
if (!empty($username) && !empty($password)){
if ($username == 'admin' && $password == '123456'){
$flag = true;
$message = '登录成功!';
//定义COOKIE
setcookie('Token',$token,time()+3600);
$_COOKIE['Token'] = $token;
// echo '登录成功!当前的COOKIE值为:'.$_COOKIE['Token'];
// echo '<br>';
//定义SESSION
$_SESSION[$token]=[
'username'=>$username,
'password'=>$password
];
// echo '当前的SESSION值为:';
// print_r($_SESSION);
// echo '<br>';
// 进入用户中心
// echo '<a href="user_center.php">用户中心</a>';
}else{
$message = '用户名或密码错误';
// echo '用户名或密码错误,请<a href="login_html.php">重试</a>';
}
}else{
$message = '用户名或密码为空';
// echo '用户名或密码为空,请<a href="login_html.php">重试</a>';
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>登录验证</title>
</head>
<body>
<input type="hidden" name="" id="flag" value="<? echo $flag;?>" />
<input type="hidden" name="" id="message" value="<? echo $message;?>" />
</body>
<script type="text/javascript">
var flag = document.getElementById('flag').value;
var message = document.getElementById('message').value;
onload = load();
function load() {
alert(message);
if (flag){
location.href='user_center.php';
} else{
location.href='newUser_html.php';
}
}
</script>
</html>
页面效果:
登录完毕后进入用户中心页面
四、用户中心:二次检查COOKIE和SESSION值是否存在
1、:简易代码
<?php
echo '<h1>用户中心</h1>';
echo '<br>';
//启动SESSION
session_start();
//判断COOKIE值是否存在
if (isset($_COOKIE['Token'])){
//获取SESSION值
if (isset($_SESSION[$_COOKIE['Token']])){
$username = $_SESSION[$_COOKIE['Token']]['username'];
echo '<h1>欢迎您:</h1>'.$username;
echo '<br>';
echo '您当前的COOKIE:'.$_COOKIE['Token'].'<br>';
echo '您当前的SESSION:';
print_r($_SESSION);
echo '<a href="leave_login.php">退出登录</a>';
}
}else{
echo '尚未登录,请<a>登录</a>';
}
页面效果:
2、优化代码后在页面利用接收的SESSION值输出用户的账号
<?php
echo '<h1>用户中心</h1>';
echo '<br>';
//启动SESSION
session_start();
//定义变量存放状态是否异常
$is_login = false;
//定义变量存放错误信息
$err_msg = '';
//判断COOKIE值是否存在
if (isset($_COOKIE['Token'])){
//获取SESSION值
if (isset($_SESSION[$_COOKIE['Token']])){
$is_login = true;
// $username = $_SESSION[$_COOKIE['Token']]['username'];
// echo '<h1>欢迎您:</h1>'.$username;
// echo '<br>';
// echo '您当前的COOKIE:'.$_COOKIE['Token'].'<br>';
// echo '您当前的SESSION:';
// print_r($_SESSION);
//
// echo '<a href="leave_login.php">退出登录</a>';
}else{
$err_msg = '访问异常';
}
}else{
$err_msg = '尚未登录';
// echo '尚未登录,请<a>登录</a>';
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>用户中心</title>
</head>
<body>
<?php if ($is_login){ ?>
<p>欢迎您:<?php echo $_SESSION[$_COOKIE['Token']]['username']?></p>
<p><a href="leave_login.php">退出登录</a></p>
<?php }else{?>
<p><?php echo $err_msg;?></p>
<?php }?>
</body>
</html>
页面效果:
五、退出登录页面
1、退出登录清空SESSION、COOKIE的值,输出检查
<?php
//清除SESSION和COOKIE
session_start();
unset($_SESSION);
setcookie('Token','',time()-10);
echo '退出登录成功!<br> <a href="login_html.php">重新登录</a> <br>';
echo 'SESSION值:';
print_r($_SESSION);
页面效果:
2、优化代码,利用js加入计时器自动跳转到登录页面
<?php
//清除SESSION和COOKIE
session_start();
unset($_SESSION);
setcookie('Token','',time()-10);
echo '退出登录成功!<br> <a href="login_html.php">重新登录</a> <br>';
echo '3秒后自动跳转';
?>
<script type="text/javascript">
onload = function(){
setTimeout(function(){
location.href='../index.php'
},3000)
}
</script>
页面效果:
总结:SESSION可以看成是一个数组,存放COOKIE的值到SESSION中,需注意的是在任何页面中使用SESSION都需要用session_start()开启SESSION功能