PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 18 章 Cookie和 Session.

Slides:



Advertisements
Similar presentations
分享人:張益源. 個人資料介紹 姓名:張益源 畢業:體育系 97 級 專長:田徑、籃球、游泳 任教學校:慈濟大學實驗國民小學 學校職務:體育兼資訊老師.
Advertisements

第二章 JSP 编译指令. 课程目标  JSP 编译指令  JSP 页面的表达式  JSP 页面的注释  JSP 页面的声明  Scriptlets.
白玉苦瓜 余光中.
动态Web开发技术--JSP.
Lego 機器人 基礎元件與感測器.
第 4 章 PHP 基本語法.
事件驱动的移动数据中心 广州舜飞信息科技有限公司 谭荣棉.
姓名: 钱琬婷 学号: 0501W238 专业: 计算机科学与技术 指导教师: 陈家琪 教授
自 然 探 索 圓周美語 My name is.
张孝祥IT课堂 -深入体验Java Web开发内幕
年度校樹選拔秀 主辦單位:楊梅國小.
MVC Servlet与MVC设计模式.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
输出数组 Result: Array (     [0] => zzu     [1] => php     [2] => MySQL     [3] => javascript     [4] => html     [5] => css )
他們,與眾不同…….
Microsoft Application Center Test
数据访问页.
Ch07 PHP程式基礎 網頁程式設計.
《ASP.NET数据库网站设计教程(C#版)》
Hello World 體驗實作第一個JSP程式.
ASP VBScript 基础知识.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 9 章 常數.
第 2 章 必備的 HTML 與 CSS 重點.
第四章 網頁表單與資料傳遞.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 13 章 陣列應用.
PHP +MySQL快速入門 Lesson 4.
PHP Cookie.
专题4:JSP脚本和指令.
基于Hadoop的数据仓库Hive.
PHP 5 入門基礎 第一個PHP 程式 PHP 資料型態.
Shell Script 程式設計.
第22章 PHP MySQL ODBC接口动态网页设计
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
JavaScript 语言3 学习网站:心蕊设计
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
條件判斷指令 -if 指令 -switch 指令 迴圈指令 - for 迴圈 - while迴圈 - break、continue 指令
PHP 程式流程控制結構.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
張智星 台大資工系 多媒體檢索實驗室 第九章 小餅乾(Cookies) 張智星 台大資工系 多媒體檢索實驗室.
3.1 数据类型 3.2 标识符与关键字 3.3 常量 3.4 变量 3.5 运算符与表达式 3.6 一个编程实例
電子商務網站架設技術 利用FB做Login
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
PHP 變數、常數與運算子 變數 常數 運算子
PHP5與MySQL4 入門學習指南 凱文瑞克 著 第 16 章 檔案處理.
架站實做—AppServ
第4章 ASP.NET的HTTP物件、輸出入與Cookie處理
Chap5 PHP程式設計進階 授課講師:.
PHP程式設計 Cookie & Session 建國技術學院 資訊管理學系 饒瑞佶.
PHP编程基础与实例教程 PHP Fundamentals & Practices
Ch09 在網頁之間傳遞資訊 網頁程式設計.
JavaScript Sunxiaoshen.
第3章 PHP表达式.
蘇文峰牧師 第一届“小组长研习会” Session 2
1 Session对象的特性 Session 状态对象 Session 对象常用的方法有: Session 对象常用的属性有:
HTTP 1.1 Method OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT
XML備份MySQL資料庫 <html> <head>
程式的時間與空間 Time and Space in Programming
2.1 高職與私立學校註冊操作說明 (2015/9/15上線)
第11章 PHP会话控制.
Lesson 4 :基礎應用一(計數器) (2005/01/27).
進階資料結構(2) Disjoint Sets
PHP程式設計 五、程式流程控制結構 建國科技大學 資訊管理學系 饒瑞佶.
網頁設計實務- PHP 與資料庫整合.
指導教授:吳有龍教授 學生:黃寶慧 學號: G 日期:2008年12月24日
第6章 PHP基本語法介紹.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 12 章 迴圈指令.
台灣當代問題探究(三) ─台灣當代網際網路問題探究
第17章 PHP應用實例探討 17-1 PHP應用實例探討 17-2 圖片版的訪客計數 17-3 訪客留言簿 17-4 聊天室
第5章 新增課程與課程管理.
Presentation transcript:

PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 18 章 Cookie和 Session

本章大綱 18-1 Cookie 18-2 存取Cookie 18-3 Cookie有效時間 18-4 Session 問題與討論

18-1 Cookie Cookie 是將少量的資料儲存在遠端的個人電腦中的技術。

Netscape Cookie 設定 以 Netscape 7.0 為例, 開啟瀏覽器後選擇 [Edit] -> [Preferences] 可以開啟如圖的視窗, 再依各個人需求決定使用 Cookie 的權限。

IE Cookie 設定 IE 則是 [工具]->[網際網路選項]->[隱私], 如圖所示, 選擇所需權限。

18-2 存取Cookie 存入Cookie可利用setcookie()函數 setcookie() 函數 格式: boolean setcookie ( 變數名稱 [, 存入值 [, 有效時間 [, 路徑 [, 領域 [, 安全性]]]]]) 變數名稱是設定 Cookie 的名稱。 存入值設定存入變數的值。 有效時間設定Cookie 變數的生命週期。 路徑是指存放 Cookie 的路徑。 領域說明 Cookie 的領域。 安全性設定為 1 時表示必須藉由 https 安全連線才可存入 Cookie。 否則設定為 0。

setcookie()範例 1. setcookie (“A”, “10”); 設定名稱為A的 Cookie, 其內容為 10。 2. setcookie (“B”, “20”,time()+3600); 設定名稱為 B, 其值為 20, 有效時間為一個小時。 3. setcookie (“C”, “Hello”,time()+7200, “./test/”, “.abc.def.tw”, 1); 設定有效時間二小時名稱為 C 的 Cookie, 存放於路徑 ./test/ 下, 領域為 .abc.def.tw, 並必須使用安全連線。

3: setcookie("B","Hello, I am B."); 4: echo "我已設定 Cookie "; 5: ?> 1: <?php 2: setcookie("A","10"); 3: setcookie("B","Hello, I am B."); 4: echo "我已設定 Cookie "; 5: ?> 第 2 行設定名稱為 A 的 Cookie, 其內容為 10。 第三行設定 Cookie 名稱為 B, 其值為 "Hello, I am B."。 第 3 行顯示提示字串。

取出cookie 利用全域變數取出cookie, 即使用 $_COOKIE陣列取得儲存於遠端電腦中的 Cookie. 1: <?php 2: echo "A = ". $_COOKIE[A] . "<p>"; 3: echo "B = ". $_COOKIE[B] . "<p>"; 4: echo "取出 Cookie"; 5: ?> 第 2-3 行分別取出並顯示 Cookie A 和 B 的內容。 第 4 行顯示提示字串。

請記得執行範例18-1 和範例 18-2 必須是同一個瀏覽器, 否則看不到圖 18-4 的結果。 這是因為目前我們所使用的設定 Cookie 的方法只能在特定的瀏覽器中使用。 換句話說, 哪一個瀏覽器中所設定的 Cookie 只能在該瀏覽器中使用。 如果已設定的 Cookie 要讓所有的瀏覽器使用就必須在設定 Cookie 時加上有效時間。 1: <?php 2: setcookie("A","10"); 3: setcookie("B","Hello, I am B."); 4: echo "我已設定 Cookie "; 5: ?> 同一個瀏覽器 1: <?php 2: echo "A = ". $_COOKIE[A] . "<p>"; 3: echo "B = ". $_COOKIE[B] . "<p>"; 4: echo "取出 Cookie"; 5: ?>

18-3 Cookie有效時間 已設定的 Cookie 要讓所有的瀏覽器使用就必須在設定 Cookie 時加上有效時間。 設定有效時間二種方法 time()+秒數 time()+3600 表示有效時間為設定 Cookie 後的 1 個小時 (60x60=3600)。 mktime(): 某個指定日期前都有效。格式: int mktime(時, 分, 秒, 月, 日, 年)

Cookie 設定實例: setcookie ("A", "10",time()+3600); Cookie A 的有效時間為 1 小時。 setcookie ("C", "20",time()+86400); Cookie B 的有效時間為 1 天。 setcookie ("D", "30", mktime(0,0,0,6,20,2008); Cookie C 的有效時間為 2008 年 6 月 20 日前。 setcookie ("E", "50", mktime(0,0,0,12,31,2020); Cookie D 的有效時間為 2020 年 12 月 31 日前。

圖(a) 圖(b) 瀏覽器過60秒後, 又變成圖(a) 1: <?php 2: $nowcnt=$_COOKIE[cnt]; 3: $nowcnt++; 4: setcookie("cnt", $nowcnt, time()+60); 5: echo "您是第 $nowcnt 次光臨本站"; 6: ?> 第 2 行取得 Cookie cnt 並指定給 $nowcnt。 第 3 行 $nowcnt 加一, 表示上站次數加一。 第 4 行將 $nowcnt 的值設定給 Cookie cnt, 有效時間為 60 秒。 第 5 行顯示上站次數。 圖(a) 圖(b) 瀏覽器過60秒後, 又變成圖(a)

刪除cookie 改變 Cookie 的有效時間讓 Cookie 立即失效, 這樣子就相當於刪除了 Cookie。 例 setcookie ("A", "",time()-60); time() 表示目前時間, 那麼 time()-60 就表示將有效時間調整成過去的時間。 這樣一來 Cookie A 就會立即失效。

第 5 行如果計數次數大於或等於 5 則將原先Cookie cnt 的 time()+60 改成 time()-60 讓 cnt 立即失效。 1: <?php 2: $nowcnt=$_COOKIE[cnt]; 3: $nowcnt++; 4: setcookie("cnt",$nowcnt,time()+60); 5: if ($nowcnt>=5) setcookie("cnt",$nowcnt,time()-60); 6: echo "您是第 $nowcnt 次光臨本站"; 第 5 行如果計數次數大於或等於 5 則將原先Cookie cnt 的 time()+60 改成 time()-60 讓 cnt 立即失效。 執行範例無論是重讀網頁幾次, 結果都是由 1 累加至 5 然後再由 1 開始到 5 一直循環。

18-4 Session Session 將資料寫在伺服器端。 資料的安全性比較高。 為了辨識不同的 Session, 每個Session 都會有一個唯一的編號稱為 Session id。 Session id 的產生方式有二種, 分別是 Cookie URL 傳遞

18-5 存取Session 啟動 session 功能的方式有二種: 第一種是參數設定。 在 php.ini 檔案中有一個參數 session.auto_start 。 將此參數改為 1 表示 enable。 第二種方式也是比較常用的方式就是利用 session_start() 函數來啟動 session。 啟動 session 後, 伺服器便會利用本次連線 (session)的 session id 前面加上 "sess_" 組合成一個檔案名稱來存放未來希望處理的 session 資料。

Session 變數在使用之前必須先 “註冊” 變數之後才可以使用。 反之, 當不使用某個變數就要“取消註冊 ”。 Session_register (“變數名稱”) 可以註冊一個session 變數。 Session_unregister (“變數名稱”) 可以取消一個 session 變數註冊。 例如 session_register(“user”) : 註冊user session_unregister(“count”) : 取消註冊count變數 用$_SESSION['變數名稱'] 的方式操作session變數。

1: <?php 2: session_start(); 3: session_register("A"); 4: session_register("B"); 5: $_SESSION['A']=10; 6: $_SESSION['B']="Hello My "; 7: ?> 8: <html> 9: <title>Session測試</title> 10: <body> 11: <?php 12: echo "Session ID = ".session_id()."<p>"; 13: echo "運算前 <br>"; 14: echo "A = ".$_SESSION['A']."<br>"; 15: echo "B = ".$_SESSION['B']."<p>"; 16: $_SESSION['A']++; 17: $_SESSION['B'].="Friend."; 18: echo "運算後 <br>"; 19: echo "A = ".$_SESSION['A']."<br>"; 20: echo "B = ".$_SESSION['B']; 21: ?> 22: </body> 23: </html> 第 2 行啟動 session 的功能。 第 3-4 行在session中註冊二的 Session 變數 A, B。 第 5 行設定 session 變數 A 的值為 10。 第 6 行設定 session 變數 B 的值為字串 。 第 12 行取得 session 的 id。 第 13-15 行顯示運算前Session 變數 A, B 的內容於網頁上。 第 16 行將 Session 變數 A 的內容加1。 第 17 行將 Session 變數 B 與 "Friend." 字串連接在一起。 第 18-20 行顯示運算後 Session 變數 A, B 的內容於網頁上。 於 session.save_path 所指定的目錄下找到 sess_session_id 的檔案。

開啟新視窗,可傳遞session id 1: <?php 2: session_start(); 3: if (!session_is_registered('A')) { 4: session_register('A'); 5: $_SESSION['A'] = 1; 6: }else{ 7: $_SESSION['A']++; 8: } 9: echo "Session id = ".session_id()."<p>"; 10: echo "變數值 = ".$_SESSION['A']."<p>"; 11: echo "<A HREF=\"./18-6.php\"?SID TARGET=newwin>開新視窗</A>"; 12: ?> 開啟新視窗,可傳遞session id

1: <?php 2: function show(){ 3: echo "session_id = ".session_id()."<br>"; 4: echo "A = ".$_SESSION['A']."<br>"; 5: echo "B = ".$_SESSION['B']."<br>"; 6: echo "C = ".$_SESSION['C']."<p>"; 7: } 8: session_start(); 9: session_register("A"); 10: session_register("B"); 11: session_register("C"); 12: $_SESSION['A']=10; 13: $_SESSION['B']=20; 14: $_SESSION['C']=30; 15: show(); 16: session_unregister("A"); 17: show(); 18: session_unset(); 19: show(); 20: session_destroy(); 21: show(); 22: ?> 第 16 行取消 A 變數註冊。 第 17 行呼叫 show()函數。 第 18 行取消所有變數。 第 19 行呼叫 show() 函數。 第 20 行取消 session。 第 21 行呼叫show() 函數。

18-6 session 函數 函數名稱 函數說明 int session_cache_expire() - 傳回 PHP.INI 中 session.cache_expire 的值 string session_cache_limiter([string cache_limiter]) - 取得或設定目前 cache limiter 的名稱 bool session_decode(string data) - 將 session 的資料解碼 bool session_destroy(void) - 取消所有 session 中註冊的資料 string session_encode(void) -- 將 session 的資料編碼 array session_get_cookie_params() -- 取得 session cookie 的資訊 string session_id([string id]) - 設定獲取回 session id bool session_is_registered(string name) -- 檢查變數是否已經在 session 中註冊。 變數已經註冊傳回 True否則傳回 False。 String session_module_name([string module]) - 取回或設定 session 模組 String session_name(string name) - 取回或設定 session 的名稱

session 函數 void session_readonly(void) - 可讀取 session 資料, 但是不可以更改內容 bool session_register(mixed name) - 註冊 session 變數 string session_save_path(string path) - 取得或設定儲存 session 的路徑 void session_set_cookie_params ( int lifetime [, string path [, string domain [, bool secure]]])-- 設定 PHP.INI 中 session cookie 參數 bool session_set_save_handler ( string open, string close, string read, string write, string destroy, string gc) -- 設定使用者定義 session 儲存功能 bool session_start ( void) - 啟動 session bool session_unregister(string name) -- 取消目前 session 中的指定變數 void session_unset(void) -- 釋放所有 session 變數 void session_write_close(void) - 寫入 session 資料及結束session

問題與討論 請說明 Cookie 的功能。 請說明 Session 的功能。 Cookie 和 Session 功能有何異同? 請利用 Session 紀錄使用者姓名, 爾後讀取網頁時會出現使用者姓名在網頁上。(提示:HTML表單)