PHP回話管理

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則適合於更加持久的數據存儲,例如論壇的訪問。

相關文章
相關標籤/搜索