1.setcookie
2.header?(?string?$string?[,?bool?$replace?= true?[,?int?$http_response_code?]] ) 通常只用到第一個參數(shù)string
header("Set-Cookie:name=value;[expires=date;][path=path;][security;][httponly;]");
比如header("Set-Cookie:cookie=cookietest;expires=".(time()+10).";path='/';security;");
注意字符串的拼接酪耕。比如"abcd=".function()."efgh"
3.數(shù)組定義現(xiàn)在常用
$test=[
? ? ? ? "1"=>"asda",
? ? ? ? "2"=>"asdsadas",
? ? ? ? "3"=>"qwewqe"
];
4.session??默認(rèn)session_id及對應(yīng)數(shù)據(jù)通過cookie存儲N椿摹Q嵯巍劲够!
(1)會話:服務(wù)器和瀏覽器保有的共同小秘密的這段時間
準(zhǔn)備建立會話的時候,服務(wù)器會分析瀏覽器的請求拳昌,看里面是否有session_id,若沒有磕仅,則創(chuàng)建一個并賦值,然后傳給瀏覽器吭练,一般會被瀏覽器保存在cookie中。之后瀏覽器再去訪問服務(wù)器時析显,會攜帶session_id鲫咽,服務(wù)器就可以認(rèn)識瀏覽器了。
服務(wù)器會為每個session_id創(chuàng)建session文件谷异,存放一些會話數(shù)據(jù).每次瀏覽器訪問服務(wù)器都會根據(jù)session_id認(rèn)領(lǐng)自己的信息分尸。
(2)開啟會話 session_start();
(3)讀取和設(shè)置會話數(shù)據(jù)? $_SESSION全局變量(是個數(shù)組)
<?php
session_start();
if(isset($_SESSION['views'])){????$_SESSION['views']=$_SESSION['views']+1;}
else{????$_SESSION['views']=1;}
echo "瀏覽量:". $_SESSION['views'];?>? //每刷新一次,瀏覽量+1 views不是session_name,session_name默認(rèn)是PHPSESSID,在php.ini中配置
(4)銷毀 Session
如果您希望刪除某些 session 數(shù)據(jù)歹嘹,可以使用 unset() 或 session_destroy() 函數(shù)箩绍。
unset() 函數(shù)用于釋放指定的 session 變量:
<?php
session_start();if(isset($_SESSION['views'])){????unset($_SESSION['views']);}?>
您也可以通過調(diào)用 session_destroy() 函數(shù)徹底銷毀 session:
<?php
session_destroy();?>
注釋:session_destroy() 將重置 session,您將失去所有已存儲的 session 數(shù)據(jù)尺上。
(5)用setcookie()來設(shè)置session的過期時間
setcookie(session_name(),session_id(),time()+3600); //session_id()返回所有session的id,而session_name都相同材蛛。name與id相同,過期時間不同怎抛,則就是不同的session卑吭。如圖
(6)session的會話配置選項
php.ini關(guān)于Session的相關(guān)設(shè)置(打開php.ini文件,在“[Session]”部分):?
1抽诉、session.use_cookies:默認(rèn)的值是“1”陨簇,代表SessionID使用Cookie來傳遞吐绵,反之就是使用Query_String來傳遞迹淌;?
2、session.name:這個就是SessionID儲存的變量名稱己单,可能是Cookie唉窃,也可能是Query_String來傳遞,默認(rèn)值是“PHPSESSID”纹笼;?
3纹份、session.cookie_lifetime:這個代表SessionID在客戶端Cookie儲存的時間,默認(rèn)是0廷痘,代表瀏覽器一關(guān)閉SessionID就作廢……就是因為這個所以Session不能永久使用蔓涧!?
4、session.gc_maxlifetime:這個是Session數(shù)據(jù)在服務(wù)器端儲存的時間笋额,如果超過這個時間元暴,那么Session數(shù)據(jù)就自動刪除!?
(7)當(dāng)cookie被禁用 怎么使用session兄猩?傳遞session_id(url中的? 作用與$_GET---參數(shù)傳遞)?
什么是$_GET
通過 URL 參數(shù)傳遞給當(dāng)前腳本的變量的數(shù)組茉盏。
課程上的例子按下圖所示寫法鉴未,這個超鏈接寫法有難度,注意賦值給href的是一大串字符串鸠姨,會跳轉(zhuǎn)到dump1.php頁面铜秆,該頁面的URL有用 ?連接的參數(shù)讶迁,即sessionid與sessionname
要在dump1.php中獲取URL的參數(shù)巍糯,必須用$_GET全局變量梅屉。圖中session_id()函數(shù)用于設(shè)置該session_name對應(yīng)的id。
8.會話銷毀
9.自定義會話處理器 鳞贷,坯汤,可以自定義會話存儲函數(shù)來將會話數(shù)據(jù)存儲到數(shù)據(jù)庫。shuhttps://www.imooc.com/video/15867
SessionHandlerInterface?{
/* 方法 */
abstract?public?close?(?void?) :?bool
abstract?public?destroy?(?string?$session_id?) :?bool
abstract?public?gc?(?int?$maxlifetime?) :?int
abstract?public?open?(?string?$save_path?,?string?$session_name?) :?bool
abstract?public?read?(?string?$session_id?) :?string
abstract?public?write?(?string?$session_id?,?string?$session_data?) :?bool
}
session_set_save_handler?(?callable?$open?,?callable?$close?,?callable?$read?,?callable?$write?,?callable?$destroy?,?callable?$gc?[,?callable?$create_sid?[,?callable?$validate_sid?[,?callable?$update_timestamp?]]] ) :?bool