1、session
1.爲何要使用session
http協議是一種無狀態的協議,只有當用戶發送請求時,服務器端纔會作出響應,所以客戶端和服務端之間是分散的,並且在服務器響應請求之後,服務器端也不能很用戶保持聯繫,二者就會沒法進行數據交互。
例如,若是用戶登陸後,在各個網頁之間進行跳轉時,服務器端是沒法識別用戶的。php
session的引入就爲較爲完美的解決了這個難題;當用戶訪問某個服務器端的時候,session機制會隨機的產生一個具備惟一性的sessionID從而去惟一的表示某個用戶,確保session的安全性,在這過程當中,數組
能夠對session對象進行數據存儲與獲取,實現服務器端和客戶端之間的交互,直到用戶關閉瀏覽器的時候,session纔會完成一次的生命週期。瀏覽器
2.session的配置
session的配置能夠經過打開php.ini進行相關配置,這裏不夠多的贅述。
3.session的基本操做
①.session的啓動安全
session_start(void);
當要使用session的時候能夠在其前面添加這個函數,就能夠啓動session了。服務器
②.sessionID的獲取cookie
session_id([string id])
其中的id不是必須的,若是填入id,則當前用戶的sessionID就是id,若沒有填寫則默認獲取當前用戶的sessionID,具備惟一性
例如:session
1 <?php 2 session_start();//啓動session 3 echo '當前的sessionID是'.session_id();//輸出當前的sessionID 4 session_id('12345'); 5 echo '當前的sessionID是'.session_id(); 6 ?>
③.session的存取
1.存取某個數值dom
1 <?php 2 $_SESSION['username']='dragon'; 3 $username=$_SESSION['username']; 4 echo $username; 5 ?>
2.存取數組函數
1 <?php 2 session_start(); 3 $array=array('1','2','3','4');//聲明一個數組 4 $_SESSION['num']=$array;//存入數組 5 //經過foreach獲取數組session 6 foreach ($_SESSION['num'] as $key => $value){ 7 echo '$_SESSION['.'''.$key.'''.']='.$value.'<br/>'; 8 } 9 ?>
固然若是想顯示某列的內容就可使用以下的代碼:網站
1 ?php 2 session_start(); 3 echo $_SESSION['num'][3];//得到下標爲3的數組的值 4 ?>
3.存取對象
1 <?php 2 class User{ 3 private $username; 4 private $password; 5 public function __construct($username,$password){ 6 $this->username=$username; 7 $this->password=$password; 8 } 9 //如下省略get和set方法 10 } 11 ?> 12 <?php 13 session_start(); 14 //建立一個User對象,並初始化它,將其存儲在session中 15 $_SESSION['user']=new User('dragon', '123456'); 16 //獲取session 17 $user=$_SESSION['user']; 18 $username=$user->getUsername(); 19 $password=$user->getPassword(); 20 echo $username.' '.$password; 21 ?>
④.session的銷燬
unset($_SESSION[key]) // 用於刪除指定變量 session_unset() // 用於清除存儲在當前會話中的全部變量 session_destroy() // 從存儲機制中徹底刪除會話
2、cookie
1.定義
在http協議下,服務器或者腳本能夠維護客戶工做站上信息的一種方式
2.工做原理
首先,服務器端在響應中利用Set-Cookie header建立一個Cookie,而後瀏覽器在它的請求中經過Cookie header,並將它返回至服務器,從而完成瀏覽器的驗證。
3.cookie的基本操做
①.cookie的建立
setcookie(string name[,string value,int expire,string path,string domain,int secure]); name:必選參數,指定cookie的名稱 value:可選參數,指定cookie的值,保存在客戶端,不該該爲敏感和機密的數據 expire:可選參數,表示cookie的有效截止時間,該參數必須是整型的,例如:time()+5*60表示 的是該cookie將在5分鐘後失效,若沒有設置,cookie會在關閉瀏覽器時失效 path:可選參數,表示cookie的有效路徑,默認爲當前路徑;例如該參數爲 「/」,那麼表示在整個domain內有效domain:可選參數,表示cookie的有效域名。例如,要使cookie 能在如www.example.com的域名下的全部子域都有效的話,該參數設置爲.example.com。雖然是可選 的,可是加上能夠兼容更多的瀏覽器。 secure:可選參數,表示cookie時候僅經過安全的HTTPS鏈接傳送,默認值爲false。當設置成true時, cookie僅在安全的鏈接中 被設置。 也能夠建立一個cookie去存放數組,例如 <?php setcookie('cookie[three]','cookiethree'); setcookie('cookie[two]','cookietwo'); setcookie('cookie[one]','cookieone'); ?>
②.cookie的獲取
一般的獲取 $_COOKIE['key']
數組的獲取:
1 <?php 2 if(isset($_COOKIE['cookie'])){ 3 foreach($_COOKIE['cookie'] as $key => $value){ 4 echo '$key : $value<br/>'; 5 } 6 } 7 ?>
③.cookie的有效期
cookie是具備生命週期的,通常默認爲關閉瀏覽器,則cookie失效,可是也能夠經過設置其有效期來表示去失效的時間,例如:
<?php //設置cookie爲一個小時失效 setcookie('name','value',time()+60*60); ?>
但若是要指定某年某月某日失效的話,就可使用如下函數
int mktime([int hour,int minute,int second,int month,int day,int year,int is_dest])
④.cookie的刪除
setcookie('name',');
若是前面設置了不一樣的參數,此時也要所有填入,確保能夠正確的刪除掉想要的cookie。
3、cookie與session的區別 1.cookie保存在客戶端,客戶端知道其中的意思;session保存在服務器端,客戶端不知道其中的意思。 2.cookie中若是設置了路徑參數,那麼同一個網站中不一樣路徑下的cookie互相訪問不到;session不區分路徑,一位用戶在訪問一個網站期間,全部的session在任何一個地方均可以訪問到。 3.cookie沒有session安全 4.session須要藉助cookie才能正常工做,若是客戶端徹底禁止cookie,則session將徹底失效。 5.通常狀況下,session適用於單次訪問的狀況,例如網站銀行,當用戶異常斷線或者超時未操做等,session會根據時間自動中斷鏈接;而cookie則適合於更加持久的數據存儲,例如論壇的訪問。