PHP會話技術

因爲HTTP協議是無鏈接、無狀態的,因此HTTP協議沒法記住客戶端的信息。爲了彌補HTTP協議的這兩種不足,因此出現了會話技術。php

1 Cookie技術

1.1 什麼是Cookie

服務器端,將可以惟一標識用戶的數據保存在客戶端的一種方式。以後,瀏覽器在每次請求時,都會自動攜帶給服務器。html

1.2 Cookie應用場景

由於Cookie文件是保存到瀏覽器端的,其每次隨身攜帶cookie數據到服務器,中途容易被其餘腳本攔截,因此Cookie不安全,一般用來保存一些不重要的數據。如:登陸時間。瀏覽器

1.3 Cookie的基本使用

1.3.1 增長cookie數據

<?php
// 增長一個Cookie
setcookie('book', 'xiaoaojianghu', time()+3600);

1.3.2 刪除cookie數據

<?php
// 刪除一個Cookie
setcookie('book', '', time()-1);
unset($_COOKIE['book']);

1.3.3 修改cookie數據

<?php
// 修改一個Cookie
setcookie('book', 'tianlongbabu', time()+3600);

1.3.4 讀取cookie數據

<?php
// 讀取Cookie數據
echo '<pre>';
var_dump($_COOKIE['book']);

1.4 Cookie的使用細節

setcookie有7個參數:安全

參數1:cookie的名字服務器

參數2:cookie的值cookie

參數3:有效期session

參數4:有效路徑post

參數5:有效域,用來設置cookie在哪一個域名下有效ui

參數6:是否只能在HTTPS協議下傳輸url

參數7:是否只在HTTP協議下

  • 瀏覽器通常只容許存放300個cookie文件,每一個站點最多20個,每一個cookie的大小限制在4k左右
  • setcookie前面不能有任何的輸出

2 Session技術

2.1 什麼是Session

session也是會話技術的一種,session以cookie爲基礎,將重要的數據保存到服務器,同時,將可以惟一標識這份數據的數據以cookie的形式保存到客戶端。

2.2 Session的應用場景

驗證碼、防跳牆、購物車

2.3 Session的基本使用

2.3.1 增長session

<?php
session_start();
$_SESSION['sex'] = female;

2.3.2 刪除session

<?php
session_start();
unset($_SESSION['sex']);
session_destroy(); // 刪除session文件

2.3.3 修改session

同2.3.1

2.3.4 查詢session

<?php
session_start();
echo '<pre>';
var_dump($_SESSION);

2.4 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 '後臺首頁';

2.5 Session實例——購物車

相關文章
相關標籤/搜索