頁面數據的做用域: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>";