今天是第十六天上课,朱老师主要通过一个登录案例讲了cookie与session的使用原理。
一、登录用cookie保存用户信息,由于页面较多,就放几个重要页面。
1. 首页index.php
实例
<?php $page_title = '首页'; //导入公共头部 include 'inc/header.php'; echo '<h2 style="font-size:1rem;color: cornflowerblue;text-align: center">首页</h2>'; //echo $_SERVER['PHP_SELF']; //判断用户是否登录? 存在cookie并且当前页面不是退出页面 echo '<p style="text-align: center">'; if(isset($_COOKIE['id']) && basename($_SERVER['PHP_SELF']) != 'logout.php') { echo '<a href="logout.php">退出</a>'; }else{ echo '<a href="login.php">登录</a>'; } echo '</p>'; //导入页面公共底部 include 'inc/footer.php'; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
效果图:
2. 登录页login.php
实例
<?php if($_SERVER['REQUEST_METHOD'] == 'POST'){ require('inc/function.php'); require('inc/connect.php'); //因为返回的是数组,所以用list()来将其赋值到变量 list($check,$data) = check_login($dbc,$_POST['email'],$_POST['password']); //检测是否验证通过 if($check){ setCookie('id',$data['id']); setCookie('name',$data['name']); //跳转 redirect_user('login_success.php'); }else{ $errors = $data; } mysqli_close($dbc); } include 'login_page.php';
运行实例 »
点击 "运行实例" 按钮查看在线实例
效果图:
3.登录成功页login_success.php
实例
<?php /** * 登陆成功页面 */ if(!isset($_COOKIE['id'])){ require 'inc/function.php'; redirect_user(); } $page_title = '登录成功'; include 'inc/header.php'; echo <<< "WELCOME" <h2 style="font-size:1rem;color: cornflowerblue;text-align: center">登录成功</h2> <p style="text-align: center">欢迎您: 尊敬的 {$_COOKIE['name']}</p> <p style="text-align: center"><a href="logout.php" >退出</a></p> WELCOME; //导入页面公共底部 include 'inc/footer.php';
运行实例 »
点击 "运行实例" 按钮查看在线实例
效果图:
4. 退出登录页logout.php
实例
<?php /** * 登录退出页面 */ if(!isset($_COOKIE['id'])){ require 'inc/function.php'; redirect_user(); }else{ setcookie('id','',time()-3600); setcookie('name','',time()-3600);//删除cookie } $page_title = '退出成功'; include 'inc/header.php'; echo <<< "LOGOUT" <h2 style="font-size:1rem;color: cornflowerblue;text-align: center">退出成功</h2> <p style="text-align:center"><a href="login.php">登录</a></p> LOGOUT; //导入页面公共底部 include 'inc/footer.php';
运行实例 »
点击 "运行实例" 按钮查看在线实例
效果图:
二、登录用session保存用户信息,效果一样
1. 首页index.php
实例
<?php session_start(); $page_title = '首页'; //导入公共头部 include 'inc/header.php'; echo '<h2 style="font-size:1rem;color: cornflowerblue;text-align: center">首页</h2>'; //echo $_SERVER['PHP_SELF']; //判断用户是否登录? 存在cookie并且当前页面不是退出页面 echo '<p style="text-align: center">'; if(isset($_SESSION['id']) && basename($_SERVER['PHP_SELF']) != 'logout.php') { echo '<a href="logout.php">退出</a>'; }else{ echo '<a href="login.php">登录</a>'; } echo '</p>'; //导入页面公共底部 include 'inc/footer.php'; ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例
2. 登录页login.php
实例
<?php session_start(); if($_SERVER['REQUEST_METHOD'] == 'POST'){ require('inc/function.php'); require('inc/connect.php'); //因为返回的是数组,所以用list()来将其赋值到变量 list($check,$data) = check_login($dbc,$_POST['email'],$_POST['password']); //检测是否验证通过 if($check){ $_SESSION['id'] = $data['id']; $_SESSION['name'] = $data['name']; //跳转 redirect_user('login_success.php'); }else{ $errors = $data; } mysqli_close($dbc); } include 'login_page.php';
运行实例 »
点击 "运行实例" 按钮查看在线实例
3. 登录成功页login_success.php
实例
<?php /** * 登陆成功页面 */ if(!isset($_SESSION['id'])){ require 'inc/function.php'; redirect_user(); } $page_title = '登录成功'; include 'inc/header.php'; echo <<< "WELCOME" <h2 style="font-size:1rem;color: cornflowerblue;text-align: center">登录成功</h2> <p style="text-align: center">欢迎您: 尊敬的 {$_SESSION['name']}</p> <p style="text-align: center"><a href="logout.php" >退出</a></p> WELCOME; //导入页面公共底部 include 'inc/footer.php';
运行实例 »
点击 "运行实例" 按钮查看在线实例
4. 登录退出页loginout.php
实例
<?php /** * 登录退出页面 */ session_start(); if(!isset($_SESSION['id'])){ require 'inc/function.php'; redirect_user(); }else{ session_destroy(); //服务器上的session信息消除 setcookie('PHPSESSID','',time()-3600); } $page_title = '退出成功'; include 'inc/header.php'; echo <<< "LOGOUT" <h2 style="font-size:1rem;color: cornflowerblue;text-align: center">退出成功</h2> <p style="text-align:center"><a href="login.php">登录</a></p> LOGOUT; //导入页面公共底部 include 'inc/footer.php';
运行实例 »
点击 "运行实例" 按钮查看在线实例
三、cookie与session优缺点