十、会话控制

十、会话控制

  1. Cookie
    • Cookie 存储在客户端
    • 向客户端电脑中设置Cookie
      • setcookie();
    • 在服务器端上提取Cookie内容
      • $_COOKIE
    • 将多维数组应用于Cookie
    • 删除Cookie
      • setcookie("member", '', time()-1);
    <?php 
    header('Content-type:text/html;charset=utf-8');
    var_dump(setcookie('name','17046112',time()+3600));//向客户端电脑中设置Cookie
    var_dump(setcookie('email','[email protected]',time()+3600));//向客户端电脑中设置Cookie
    var_dump(setcookie('member[name]','17046112',time()+3600));//向客户端电脑中设置Cookie
    var_dump($_COOKIE);//在服务器端上提取 Cookie 内容
    var_dump(setcookie('name', '', time()-1));//删除Cookie
    ?>
    

在这里插入图片描述
2. session

  • session 存储在服务器端
  • 开启 session
    • session_start();
      • 开启一个会话
      • 打开已经存在的会话
  • 使用 session 存储数据
  • 注销变量与销毁 session
//开启session
<?php 
header('Content-type:text/html;charset=utf-8');
session_start();
$_SESSION['name'] = '17046112';
$_SESSION['email'] = '[email protected]';
$_SESSION['url'] = 'baidu.com';
?>
//使用 session 存储数据
<?php 
header('Content-type:text/html;charset=utf-8');
session_start();
var_dump($_SESSION);
var_dump($_COOKIE);
var_dump(session_name());
?>
//注销变量与销毁session
<?php 
session_start();//打开销毁会话
session_unset();//释放所有的会话变量
session_destroy();//销毁一个会话中的全部数据
setcookie(session_name(), "", time()-3600, "/");//销毁保存在客户端的卡号(session id)
?>
  1. 基于 Cookiesession 的登录模块
    //login.php
    <?php 
    header('Content-type:text/html;charset=utf-8');
    if (isset($_COOKIE['username']) && $_COOKIE['username'] === '17046112') {
        exit("你已登录请勿重复登录!");
    }
    if(isset($_POST['submit'])){
        if($_POST['username'] !== '' && $_POST['password'] !== ''){
            if($_POST['username'] === '17046112' && $_POST['password'] === '17046112'){
                if(setcookie('username', $_POST['username'], time()+3600)){
                    header("Location:skip.php?url=index.php&info=登录成功!");
                }else{
                    echo "Cookie 设置失败!";
                }            
            }else{
                header("Location:skip.php?url=login.php&info=账号或密码输入错误,登录失败!");
            }
        }else{
            echo "请输入账号或密码!";
        }
    }
    ?>
    <!doctype html>
    <html lang="zh-CN">
    <head>
    <meta charset="utf-8">
    <title>登录界面</title>
    </head>
    <body>
    <form method="post" action="login.php">
    	帐号:<input type='text' name='username' />
    	密码:<input type='password' name='password' />
    	<input type="submit" name="submit" value="登录" />
    </form>
    </body>
    </html>
    
    //skip.php
    <?php 
    if(!isset($_GET['url']) || !isset($_GET['info'])){
        exit();
    }
    ?>
    
    <!doctype html>
    <html lang="zh-CN">
    <head>
    <meta charset="utf-8">
    <meta http-equiv="refresh" content="3;url=<?php echo $_GET['url'] ?>" />
    <title>正在跳转中...</title>
    </head>
    <body>
    	<div style="text-align: center;font-size: 20px"> <?php echo $_GET['info']?>三秒后自动跳转! </div>
    </body>
    </html>
    
    //index.php
    <?php 
    header('Content-type:text/html;charset=utf-8');
    if (isset($_COOKIE['username']) && $_COOKIE['username'] === '17046112') {
        echo "{$_COOKIE['username']}登录成功!";
        echo "<a href='logout.php'> 注销 </a>";
    }else{
        echo "<a href='login.php'> 请登录 </a>";
    }
    ?>
    
    //logout.php
    <?php 
    header('Content-type:text/html;charset=utf-8');
    if (isset($_COOKIE['username']) && $_COOKIE['username'] === '17046112') {
        if(setcookie('username', $_POST['username'], time()-3600)){
            header("Location:skip.php?url=login.php&info=注销成功,正在跳转中!");
        }else{
            header("Location:skip.php?url=login.php&info=注销失败,请稍后再试!");
        }
    }
    ?>
    
发布了10 篇原创文章 · 获赞 0 · 访问量 116

猜你喜欢

转载自blog.csdn.net/ck_15270706753/article/details/105016492