PHP的會話控制

頁面數據的做用域:php

當前頁共享數據:變量、常量web

兩個頁面間傳遞數據:get,post數據庫

跟蹤用戶的多頁面數據共享(會話):session、cookiejson

全局數據共享:文件、數據庫、memcached數組

 

Cookie:瀏覽器

數據存儲在瀏覽器文件中緩存

數據經過請求頭攜帶信息(Cookie:)進行頁面cookie數據傳遞服務器

基本使用:cookie

 1 //設置cookie 參數(鍵,值,時間)
 2 //時間不寫或者爲0,則會保存相當閉瀏覽器程序
 3 //時間其餘值爲xx秒
 4 setcookie("dong","dongxiaodong");
 5 //保存一天,時間參數:當前時間戳+24小時*60分*60秒
 6 setcookie("xiao1","wa wa wa",time()+24*60*60);
 7 //數組數據
 8 //獲取:echo $_COOKIE["dong"]["d1"];
 9 //數組鍵若留空,不可自動增加
10 setcookie("dong[d1]","dong11111");
11 
12 //若cookie爲第一次設置,則不可在當前頁獲得值
13 //如下爲下一頁內容
14 //-----------------------------
15 //打印全部
16 print_r($_COOKIE);
17 
18 echo $_COOKIE["xiao1"];
19 echo $_COOKIE["dong"]["d1"];
20 
21 //刪除cookie
22 //當前頁第一次設置不可以使用,時間小於當前時間則過時無效
23 setcookie("dong","",time()-10);

 

Session:session

數據默認保存在服務器文件中

基本使用:

 1 //開啓session
 2 //將會向客戶端發送一個sessionID,保存在客戶端cookie中
 3 session_start();
 4 
 5 //獲得sessionID的鍵
 6 echo session_name();
 7 //獲得sessionID的值
 8 //echo session_id();
 9 
10 //保存數據
11 $_SESSION["dong"]="dongxiaodong123";
12 //可在當前頁獲取數據
13 echo $_SESSION["dong"];
14 
15 //清除某個數據
16 unset($_SESSION["dong"]);
17 //清除全部數據
18 $_SESSION=array();
19 
20 //銷燬session,刪除服務器保存的session文件
21 session_destroy();
22 
23 //自動保存的sessionID
24 //如下爲下一頁內容
25 //---------------------------------------------
26 //獲得本地保存的sessionID
27 //echo $_COOKIE["PHPSESSID"];

服務器中Session保存位置:

內容查看:

 

解決客戶端瀏覽器禁用Cookie

當客戶端瀏覽器禁用cookie後服務器在客戶端對應cookie中沒有保存sessionID,因此當客戶端頁面刷新或者跳轉時會從新生成session數據,即每次都會產生不一樣的sessionID,因此其數據可認爲不能被共享。

解決方法是使用常量SID判斷客戶端的cookie是否被禁用,而自動匹配數據傳遞

起始頁代碼:

1 session_start();
2 $_SESSION["dong"]="dongxiaodong1233";
3 //頁面跳轉攜帶使用SID可動態更加客戶端有沒有設置禁止cookie傳遞參數
4 echo "<a href='wan11.php?".SID."'>tiaotiao</a>";

第二頁:

1 //手動設置sessionID
2 //cookie被禁用時使用get傳遞sessionID時使用
3 if(!empty($_GET[session_name()])){
4 //設置sessionID
5 session_id($_GET[session_name()]);
6 }
7 session_start();
8 //獲取sessionID對應的數據
9 echo $_SESSION["dong"];

 

使用memcache對session進行高效緩存:

第一步:管理員運行cmd,打開memcache服務器

 

第二步:設置保存方式爲memcache

第三步:設置鏈接地址

第四步:

 重啓web服務器,便可常規使用session便可 

 

JSON數據的編碼與解碼:

編碼json:$字符串名=json_encode($數組名);

解碼json1:$對象=json_decode($json字符串);訪問爲$對象->原數組下標

解碼json2:$數組=json_decode($json字符串,true);訪問爲$數組[‘數組下標’]

 

 簡單的加密和解碼:

 1         $passwd="123456";
 2         
 3         //md5加密,每次獲得的結果是同樣的,不可逆
 4         echo "<br/>md5加密:".md5($passwd);
 5         
 6         
 7         //sha1加密,每次獲得的結果同樣,不可逆
 8         echo "<br/>sha1加密:".sha1($passwd);
 9         
10 
11         //base64_encode加密,可逆
12         $bas_passwd=base64_encode ($passwd);//加密
13         echo "<br/>base64加密:".$bas_passwd;
14         echo "<br/>base64解密:".base64_decode($bas_passwd);//解密
15         
16         //多重加密
17         $bas_passwd2=base64_encode (md5($passwd));//md5加密而後再base64加密
18         echo "<br/>base64加密:".$bas_passwd2;//輸出加密後的結果
19         echo "<br/>base64解密:".base64_decode($bas_passwd2);//獲得md5加密的值

 

頁面跳轉:

 1 //當即跳轉
 2 //header("Location:main.php");
 3 //echo '<script>location="main.php"</script>';
 4 
 5 //3秒後跳轉
 6 //echo '<script>setTimeout(\'location="main.php"\',3000)</script>';
 7 
 8 
 9 //提示後跳轉
10 echo "<script>alert('肯定跳轉頁面');window.location.href='main.php';</script>";
相關文章
相關標籤/搜索