因为HTTP协议是无链接、无状态的,因此HTTP协议没法记住客户端的信息。为了弥补HTTP协议的这两种不足,因此出现了会话技术。php
服务器端,将可以惟一标识用户的数据保存在客户端的一种方式。以后,浏览器在每次请求时,都会自动携带给服务器。html
由于Cookie文件是保存到浏览器端的,其每次随身携带cookie数据到服务器,中途容易被其余脚本拦截,因此Cookie不安全,一般用来保存一些不重要的数据。如:登陆时间。浏览器
<?php // 增长一个Cookie setcookie('book', 'xiaoaojianghu', time()+3600);
<?php // 删除一个Cookie setcookie('book', '', time()-1); unset($_COOKIE['book']);
<?php // 修改一个Cookie setcookie('book', 'tianlongbabu', time()+3600);
<?php // 读取Cookie数据 echo '<pre>'; var_dump($_COOKIE['book']);
setcookie有7个参数:安全
参数1:cookie的名字服务器
参数2:cookie的值cookie
参数3:有效期session
参数4:有效路径post
参数5:有效域,用来设置cookie在哪一个域名下有效ui
参数6:是否只能在HTTPS协议下传输url
参数7:是否只在HTTP协议下
session也是会话技术的一种,session以cookie为基础,将重要的数据保存到服务器,同时,将可以惟一标识这份数据的数据以cookie的形式保存到客户端。
验证码、防跳墙、购物车
<?php session_start(); $_SESSION['sex'] = female;
<?php session_start(); unset($_SESSION['sex']); session_destroy(); // 删除session文件
同2.3.1
<?php session_start(); echo '<pre>'; var_dump($_SESSION);
防止用户未经登陆就进入咱们的后台。直接登陆index.php会报错。
form.html代码以下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件上传</title> </head> <body> <form action="check.php" method="post"> 用户名:<input type="text" name="user"><br> 密码:<input type="password" name="pass"><br> <input type="submit" value="提交"> </form> </body> </html>
check.php代码以下:
<?php // 接收表单提交的用户名密码 $user = $_POST['user']; $pass = $_POST['pass']; // 暂时给定合法用户为 张三 admin if($user == 'admin' && $pass == 'admin'){ session_start(); $_SESSION['user'] = $user; header("Refresh:3;url=index.php"); echo "登陆成功"; exit(); }else{ header("Refresh:3;url=form.html"); echo '登陆失败'; exit(); }
index.php代码以下:
<?php session_start(); if(!isset($_SESSION['user'])){ header('Refresh:2;url=form.html'); echo '非法访问,当心我告你'; exit(); } echo '后台首页';