1. 程式人生 > >第117講 session①-session的原理介紹 儲存session

第117講 session①-session的原理介紹 儲存session

注意所有取session之前都要判斷是否為null

思考問題

瀏覽網站時,張三李四購買不同的商品,並且在檢視購物車時候可以檢視到各自需要購買的商品
思路:

  • 1、資料庫
  • 2、cookies
  • 3、session

當登陸某個網站,在任意網頁介面都能看到登陸的名字?
思路:

  • 1、資料庫->特別繁瑣效能極差,每個頁面都要請求資料庫,加入使用者量多爆炸了
  • 2、cookie
  • 問題1:安全性
  • 問題2:在網路傳資料,涉及到頻寬的問題(所有涉及到的cookie每次都會進行傳遞)
    解決之道3:session 用session的話 session檔案直接儲存在伺服器端。首先安全性可以保證,資料是存在伺服器端的。那麼直接從伺服器取就好了不需要像cookie一樣瀏覽器傳遞來傳遞去省帶寬了。

之前的使用者管理系統 :無需登入就可以直接管理使用者增刪查改(有連結就行)

最好的解決方案—>session

Session 是伺服器技術,利用這個技術伺服器在執行時候可以為每一個使用者單獨建立一個獨享的session檔案,由於session為使用者瀏覽器獨享,所以使用者在訪問伺服器的web資源時候,可以把各自的資料放在各自的session中,當用戶再去訪問伺服器中的web資源時,其他web資源再從使用者各自的session中取出資料為使用者服務

  • 預設情況下session檔案將被儲存在c:/window/temp

session 初步介紹

  • ①session是伺服器端技術
  • ②原理
    image
  • ③ session的基本用法(curd)增刪查改
  • 3.1 如何儲存session資料
    修改session儲存位置
    image
  • ④ 注意一個會話對應一個session檔案

程式碼:

<?php
	header("content-type:text/html;charset=utf-8");
	echo "<br/>***演示如何儲存session資料***<br/>";
//	1、初始化session
	session_start();
//	2、儲存資料
	$_SESSION['name']="qb";
	echo "儲存ok!";

儲存的格式:

name|s:2:"qb";  

以上

欄位 含義
name 表示key
s 表示型別
2 表示資料大小
qb 表示值

儲存各種型別session

<?php
	header("content-type:text/html;charset=utf-8");
	echo "<br/>***演示如何儲存session資料***<br/>";
//	1、初始化session
	session_start();
//	2、儲存資料
	$_SESSION['name']="qb";
	//session 可以儲存所有的資料型別   比如 double ,Integer ,boolean ,array ,object 都可以
	$_SESSION['age']=100;//儲存int
	$_SESSION['isBoy']=true;//儲存boolean
	//儲存陣列
	$arr1 = array("北京","小明","hello",101);
	$_SESSION['arr1'] = $arr1;
	//儲存一個物件
	class  Dog{
		public $dogname;
		public $sex;
	}
	$dog = new Dog();
	$dog->dogname="小寶";
	$dog->sex="公";
	$_SESSION['dog'] = $dog;
	echo "儲存ok!";

儲存後session結構

name|s:2:"qb";age|i:100;isBoy|b:1;arr1|a:4:{i:0;s:6:"北京";i:1;s:6:"小明";i:2;s:5:"hello";i:3;i:101;}dog|O:3:"Dog":2:{s:7:"dogname";s:6:"小寶";s:3:"sex";s:3:"公";}

由上可以看出session中儲存的資料型別
String , integer ,double,bool ,array , object

如何獲取session資料

小結:

  • 1、如果需要使用session,必須要初始化
    即session_start();
  • 2、session檔案中可以放入多個鍵值對,注意,鍵不能重複
  • 3、如果我們要取出物件,則事先宣告下就好