PHP复习6:SESSION的设定和小型应用场景

一、简单首页

<?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功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值