亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cookie與session如何在PHP中使用

發布時間:2021-04-01 16:30:35 來源:億速云 閱讀:146 作者:Leah 欄目:開發技術

這期內容當中小編將會給大家帶來有關cookie與session如何在PHP中使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

產生背景

HTTP協議是無狀態的協議。一旦數據交換完畢,客戶端與服務器端的連接就會關閉,再次交換數據需要建立新的連接。這就意味著服務器無法從連接上跟蹤會話。于是需要引入一種機制,COOKIE于是就順應而生。

Session是另一種記錄客戶狀態的機制,不同的是Cookie保存在客戶端瀏覽器中,而Session保存在服務器上。客戶端瀏覽器訪問服務器的時候,服務器把客戶端信息以某種形式記錄在服務器上。這就是Session。

理解例子

以前大學的時候,經常去大卡司去喝奶茶,每喝一杯,都可以得到一個印花(第一次喝的時候他會給你個積分卡片),集齊6個印花之后,就可以免費獲得一杯奶茶。這樣子,印花的信息是保存在客戶的積分卡上,你如果不懷好意的話,就自己搞幾個神似的印花去騙奶茶喝吧。哈哈,這樣子是不是更符合在客戶端端(cookie)保持狀態。而拿銀行卡去銀行取錢,我們的卡只需要保存一個卡號,更多的信息是保存在服務器中(session),這樣也比較符合服務器端保持狀態。

具體來說cookie機制采用的是在客戶端保持狀態的方案,而session機制采用的是在服務器端保持狀態的方案。同時我們也看到,由于采用服務器端保持狀態的方案在客戶端也需要保存一個標識,所以session機制可能需要借助于cookie機制來達到保存標識的目的,

簡述cookie

PHP工作原理:PHP通過setcookie函數進行Cookie的設置,任何從瀏覽器發回的Cookie,PHP都會自動的將他存儲在$_COOKIE的全局變量之中,因此我們可以通過$_COOKIE['key']的形式來讀取某個Cookie值。

用途:PHP中的Cookie具有非常廣泛的使用,經常用來存儲用戶的登錄信息,購物車等,且在使用會話 Session時通常使用Cookie來存儲會話id來識別用戶,Cookie具備有效期,當有效期結束之后,Cookie會自動的從客戶端刪除。同時為 了進行安全控制,Cookie還可以設置域跟路徑。

cookie與session如何在PHP中使用

函數Cookie

PHP設置Cookie最常用的方法就是使用setcookie函數,setcookie具有7個可選參數,我們常用到的為前5個:

  • name( Cookie名)可以通過$_COOKIE['name'] 進行訪問

  • value(Cookie的值)

  • expire(過期時間)Unix時間戳格式,默認為0,表示瀏覽器關閉即失效

  • path(有效路徑)如果路徑設置為'/',則整個網站都有效

  • domain(有效域)默認整個域名都有效,如果設置了'www.imooc.com',則只在www子域中有效

$value = 'test';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600); //有效期一小時
setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //設置路徑與域

PHP中還有一個設置Cookie的函數setrawcookie,setrawcookie跟setcookie基本一樣,唯一的不同就是value值不會自動的進行urlencode,因此在需要的時候要手動的進行urlencode。

setrawcookie('cookie_name', rawurlencode($value), time()+606024*365);

因為Cookie是通過HTTP標頭進行設置的,所以也可以直接使用header方法進行設置。

header("Set-Cookie:cookie_name=value");

刪除cookie

PHP設置Cookie最常用的方法就是使用setcookie函數,setcookie具有7個可選參數,我們常用到的為前5個:

  • name( Cookie名)可以通過$_COOKIE['name'] 進行訪問

  • value(Cookie的值)

  • expire(過期時間)Unix時間戳格式,默認為0,表示瀏覽器關閉即失效

  • path(有效路徑)如果路徑設置為'/',則整個網站都有效

  • domain(有效域)默認整個域名都有效,如果設置了'www.imooc.com',則只在www子域中有效

$value = 'test';
setcookie("TestCookie", $value);
setcookie("TestCookie", $value, time()+3600); //有效期一小時
setcookie("TestCookie", $value, time()+3600, "/path/", "imooc.com"); //設置路徑與域

PHP中還有一個設置Cookie的函數setrawcookie,setrawcookie跟setcookie基本一樣,唯一的不同就是value值不會自動的進行urlencode,因此在需要的時候要手動的進行urlencode。

setrawcookie('cookie_name', rawurlencode($value), time()+606024*365);

因為Cookie是通過HTTP標頭進行設置的,所以也可以直接使用header方法進行設置。

header("Set-Cookie:cookie_name=value");

簡述session

cookie與session如何在PHP中使用

在PHP中使用session非常簡單,先執行session_start方法開啟session,然后通過全局變量$_SESSION進行session的讀寫。

session_start();
$_SESSION['test'] = time();
var_dump($_SESSION);

刪除session

在PHP中使用session非常簡單,先執行session_start方法開啟session,然后通過全局變量$_SESSION進行session的讀寫。

session_start();
$_SESSION['test'] = time();
var_dump($_SESSION);

session會自動的對要設置的值進行encode與decode,因此session可以支持任意數據類型,包括數據與對象等。

session_start();
$_SESSION['ary'] = array('name' => 'jobs');
$_SESSION['obj'] = new stdClass();
var_dump($_SESSION);

默認情況下,session是以文件形式存儲在服務器上的,因此當一個頁面開啟了session之后,會獨占這個session文件,這樣會導致當前用戶的其他并發訪問無法執行而等待。可以采用緩存或者數據庫的形式存儲來解決這個問題,這個我們會在一些高級的課程中講到。

session存儲用戶信息

session可以用來存儲多種類型的數據,因此具有很多的用途,常用來存儲用戶的登錄信息,購物車數據,或者一些臨時使用的暫存數據等。
用戶在登錄成功以后,通常可以將用戶的信息存儲在session中,一般的會單獨的將一些重要的字段單獨存儲,然后所有的用戶信息獨立存儲。

$_SESSION['uid'] = $userinfo['uid'];
$_SESSION['userinfo'] = $userinfo;

一般來說,登錄信息既可以存儲在sessioin中,也可以存儲在cookie中,他們之間的差別在于session可以方便的存取多種數據類型, 而cookie只支持字符串類型,同時對于一些安全性比較高的數據,cookie需要進行格式化與加密存儲,而session存儲在服務端則安全性較高。

<?php
session_start();//假設用戶登錄成功獲得了以下用戶數據
$userinfo = array(
  'uid' => 10000,
  'name' => 'spark',
  'email' => 'spark@imooc.com',
  'sex' => 'man',
  'age' => '18');
header("content-type:text/html; charset=utf-8");
/* 將用戶信息保存到session中 */
$_SESSION['uid'] = $userinfo['uid'];
$_SESSION['name'] = $userinfo['name'];
$_SESSION['userinfo'] = $userinfo;
//* 將用戶數據保存到cookie中的一個簡單方法 */
$secureKey = 'imooc'; //加密密鑰
$str = serialize($userinfo); //將用戶信息序列化//用戶信息加密前
$str = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), $str, MCRYPT_MODE_ECB));//用戶信息加密后//將加密后的用戶數據存儲到cookie中
setcookie('userinfo', $str);
//當需要使用時進行解密
$str = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($secureKey), base64_decode($str), MCRYPT_MODE_ECB);
$uinfo = unserialize($str);
echo "解密后的用戶信息:<br>";
print_r($uinfo);

異同

cookie與session如何在PHP中使用

1.cookie將數據存儲在客戶端,建立起用戶與服務器之間的聯系,session是將用戶的會話數據存儲在服務端
2.cookie相對不是太安全,容易被盜用導致cookie欺騙
3.單個cookie的值最大只能存儲4k  session沒有大小限制
4.每次請求都要進行網絡傳輸,占用帶寬
5.通過一個session_id進行用戶識別,PHP默認情況下session id是通過cookie來保存的,因此從某種程度上來說,seesion依賴于cookie。但這不是絕對的,session id也可以通過參數來實現,只要能將session id傳遞到服務端進行識別的機制都可以使用session。

jQuery Cookie 插件

引入

<script src="https://cdn.staticfile.org/jquery/3.4.0/jquery.min.js"></script> 
<script src="https://cdn.staticfile.org/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>

設置刪除

$.cookie('name', 'value', { expires: 7, path: '/' });
$.removeCookie('name'); // => true

上述就是小編為大家分享的cookie與session如何在PHP中使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北安市| 永宁县| 保亭| 凤阳县| 鸡东县| 西宁市| 舒兰市| 措美县| 前郭尔| 铅山县| 牟定县| 盐亭县| 定西市| 山阳县| 天水市| 湟源县| 阳山县| 灌云县| 榆树市| 沙洋县| 英山县| 永吉县| 商城县| 镶黄旗| 延吉市| 昌宁县| 阿合奇县| 鹤岗市| 新晃| 昭觉县| 永靖县| 西充县| 九江县| 凤城市| 山丹县| 甘洛县| 上高县| 武邑县| 红原县| 资兴市| 塔城市|