PHP程式設計 Cookie & Session 建國技術學院 資訊管理學系 饒瑞佶.

Slides:



Advertisements
Similar presentations
第四章 衛生保健及急救 組員: 4990U002 何易芳 4990U021 張書涵 4990U035 沈采柔 4990U036 王孜瑜 4990U039 許佳靜 4990U043 黃懿華 4991U002 柳瑋翎 4991U008 陳禹伶 第五組.
Advertisements

第四週課程 1 (10/10~10/16) 如何建立資料. 原始資料範例 a1~a5 表示選擇題,輸入原始答案,如 A 、B、C、D b1~b5 表示填充題, c1~c5 表示計算題,輸入得分.
報告人:教育部會計處處長 黃 永 傳 日 期:103 年12 月27 日
第八章 Session與Cookie.
2015年重点税源企业 报表填报流程培训会 海淀地税局 收入核算科.
法 在 身 边 杜绝不良行为,远离违法犯罪 —— 走好青春第一步.
农行签约前准备 1、农行签约之前需登录农行网站-电子银行-安全专区-安全工具-K宝-K宝驱动,确保电脑已经安装农行K宝驱动.
LearnMode學習吧 行動學習 網站註冊程序 長榮中學 電腦中心 製.
網頁狀態管理 ― Cookie 與 Session
分析测试中心实验仪器 预约指南v1.0 合肥工业大学分析测试中心
無線寬頻分享器設定範例 銜接硬體線路 推斷無線基地台的IP 設定無線基地台 相關觀念解釋.
第 1 章 使用 APP INVENTOR 2 開發 ANDROID APP
Windows 2003 Server FTP站台的架設
PHP +MySQL快速入門 Lesson 4.
臺北市立大學 資訊科學系(含碩士班) 賴阿福
PHP Cookie.
PHP與MySQL連結 大葉大學 資工系 黃鈴玲.
TCP協定 (傳輸層).
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
101北一女中 資訊選手培訓營 妳不可不了解的指標 Nan.
Working with Databases (II) 靜宜大學資管系 楊子青
Google Data API Spreadsheet
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 18 章 Cookie和 Session.
SQL Stored Procedure SQL 預存程序.
CHT IPv6測試 D-Link Taiwan 友訊科技台灣分公司 TTSS 電信技術支援課 Name:
安裝JDK 安裝Eclipse Eclipse 中文化
網頁切換移轉 JS vs. ASP.NET.
張智星 台大資工系 多媒體檢索實驗室 第九章 小餅乾(Cookies) 張智星 台大資工系 多媒體檢索實驗室.
檔案與磁碟的基本介紹.
Java 程式設計 講師:FrankLin.
檔案傳輸協定(FTP) 9.1 什麼是檔案傳輸協定 9.2 常用的FTP指令 9.3 Windows內建的FTP 9.4 瀏覽器的FTP功能
FTP檔案上傳下載 實務與運用.
私立南山高中 信息組 電腦研習 電腦資料的備份 中華民國 99年4月20日 星期二.
指導老師:黃貞芬 老師 專題組員:B 黃育宇 B 魏志軒 B 平震宇
網頁切換移轉 JS vs. ASP.NET.
DHCP for W2K.
驗證 Authentication.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
表單(Form).
VS.NET 2003 IDE.
建立一 function s (type) 可以用來繪製cyclic-harmonic curves
FileUpload控制項 建國科技大學 資管系 饒瑞佶 2007年.
UpToDate Anywhere 設定方法
Ch09 在網頁之間傳遞資訊 網頁程式設計.
表單(Form).
讓Emulator可以 使用Android Market
IIS Internet Information Services
挑戰C++程式語言 ──第8章 進一步談字元與字串
HTTP 1.1 Method OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT
個人網路空間 資訊教育.
VS.NET 2003 IDE.
如何使用Gene Ontology 網址:
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
利用 EditorConfig 自訂文字編輯器設定
案件名稱: 資安預警通報 通報等級: 第一級 發生時間: 2019/02/24 03:53:28 案件說明:
陣列與結構.
編輯網頁可用那些應用程式? 記事本 Word FrontPage Dreamweaver.
研究生出国申请流程 学生使用手册.
基本指令.
1. 查詢個人電腦版本 1.進入控制台 2.點選“所有控制台項目” 3.點選“系統”.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
如何從政大圖書館館藏目錄匯出書目至EndNote
班級:博碩子一甲 授課老師:鐘國家 助教:陳國政
Parasitics Extraction (PEX) 與 postsimulation(posim)
Develop and Build Drives by Visual C++ IDE
CHT IPv6測試 D-Link Taiwan 友訊科技台灣分公司 TTSS 電信技術支援課 Name:
InputStreamReader Console Scanner
Presentation transcript:

PHP程式設計 Cookie & Session 建國技術學院 資訊管理學系 饒瑞佶

PHP Cookie

Cookie 將少量資料儲存(by檔案)在遠端個人電腦的技術。 C:\Documents and Settings\電腦帳號\Cookies (Windows NT/2000/XP) 或 C:\Documents and Settings\帳號\Local Settings\Temporary Internet Files\ Cookie 的檔案名稱「可能」 是: tceb@km.tceb.edu[1].txt (就是 主機使用者帳號@網址.txt ) 它的內容可能是: phpbb2km_data       (cookie 名稱) s%3A0%3A%22%22%3B  (cookie 值) km.tceb.edu.tw/       (cookie 網域及路徑) 1536 16956672 29648268 4116192768 29574842 *

Cookie 使用者可以設定拒絕。 哪個瀏覽器設定的cookie,只能在該瀏覽器使用。 以IE為例 [工具]  [Internet選項]  [隱私]

Cookie的限制 每個使用者的瀏覽器只能支援(存取)300個Cookie 每個Cookie的大小最多僅4k Bytes的容量

Cookie的存取 設定: boolean setcookie (變數名,值,有效時間,路徑,領域,安全性) Setcookie(“A”, 10); Setcookie(“B”,”20”,time()+3600); Setcookie(“C”,”hello”,time()+7200,”./test/”,”abc.def.tw”,1); 必須在任何輸出前設定cookie 取出: $_COOKIE陣列 範例18-1 + 18-2

Cookie的存取 哪個瀏覽器設定的cookie,只能在該瀏覽器使用。否則要設定有效時間。 time()+3600 mktime(時,分,秒,月,日,年) 可以用來刪除cookie 範例18-4

PHP Session

Session 將資料儲存在伺服器的技術。 檔案位置 Session是將使用者資訊儲存在Server 端暫存檔中,儲存的位置是依照 php.ini 的設定: session.save_path = /tmp Session 的檔案名稱「可能」是 : sess_3dd484f2bab6a2d2509e9850dae3b897 (就是 sess_ 開頭,加上 32字元的亂數雜湊編碼所組成的檔名) 它的內容可能是: check|s:3:"yes";var1|s:1:"4";var2|s:1:"5"; 其實PHP的Session內容就是「變數名稱|變數類型:長度:內容;」的組合

Session 每次連線都有一個session id 要啟動才可以使用。 php.ini中的session.auto_start參數需設定為1 針對$_SESSION、$HTTP_SESSION_VARS而言 Session_start() 變數需要先註冊 Session_register(變數名) Session_unregister(變數名) $_SESSION陣列存取 所有的session放在session.save_path目錄中(php.ini) 範例18-5, 18-6

Session 使用Session時,有三個程序: 第一:啟動session功能 ─ 使用 session_start( ) 函數 第二:註冊session變數 ─ 使用 session_register( ) 函數     (或用$_SESSION、$HTTP_SESSION_VARS ) 第三:清除session變數或檔案 ─ 使用 session_unregister( )或 session_destroy( )函數 取得 session 的id值(與session檔案名稱,就是sess_後面接的32字元) ─ 使用 session_id ( )函數 查看要傳遞的變數是否已被註冊 ─ 使用 session_is_registerd( ) 函數

Session register <?php /*註冊session的變數名稱 abc,並將值置入。注意,在session_register( ) 函數內,註冊的是名稱的「字串」,不用加「$」。 */ $abc = "最原始的方法"; session_register("abc"); //這是利用所謂_SESSION方式註冊變數名稱「 xyz 」及值。 $_SESSION["xyz"] = "第二種方法"; //這是利用所謂HTTP_SESSION_VARS方式註冊變數名稱「 third 」及值。 $HTTP_SESSION_VARS["third"] = "第三種方法"; ?> 請特別注意,如果在session_register( )函數前沒有使用 session_start( )來啟動時,會自動呼叫 session_start( );而 $_SESSION 及 $HTTP_SESSION_VARS 方式並不會呼叫 ,須在使用前事先 session_start( ) 才有作用。

Session unregister <?php session_start( ); session_unregister("abc"); //假設 $abc = "123“ ?> 注意:須先啟動session_start( )函數才可正常清除。

Session傳遞 (共用) 透過URLs (網址?PHPSESSID=3dd484f2bab6a2d2509e9850dae3b897) 如果php.ini將「session.use_trans_sid」設定為「0」 透過Cookie php.ini有將「session.use_trans_sid」設定為「1」

Session傳遞 aa.php <?php session_start(); //啟動 session echo '>>第一頁<<'; $_SESSION['color'] = '藍色'; $_SESSION['city'] = '台中市'; $_SESSION['time'] = date("Y年m月d日 H時i分s秒"); // 連結另一個php程式, // 如果可以使用 cookie方式, //注意這裡用單引號 echo '<br /><a href=“bb.php">第二頁(cookie)</a>'; // 如果需用利用url方式傳遞 echo '<br /><a href=“bb.php?'.SID. '">第二頁(URLs)</a>'; ?>

Session傳遞 bb.php <?php session_start(); echo '>>第二頁<< <br />'; echo $_SESSION['color']."<br>"; echo $_SESSION['city']."<br>"; echo date("Y年m月d日 H時i分s秒")." ==> ".$_SESSION['time']; // 如果需用傳遞回第一頁 echo '<br /><a href=“aa.php?'. SID . '">第一頁</a>'; ?>

Session destroy <?php //啟動session session_start( ); /*清除session檔裡所有的資料; 如果要使用session_destroy( )函數,這動作可有可無。 */ session_unset( ); //刪除session檔 session_destroy( ); ?> 注意:須先啟動session_start( )函數才可正常運作。

安全性 在使用者登入時,在session資訊中即加入使用者的IP,然後再不同程式啟動session的同時,也連帶檢查是否來自同一個IP,如果發現不同時,就拒絕使用,並立即刪除這個session的檔案。

安全性 Ch17-4-1.php <?php session_start(); //啟動 session echo ">>> 第 一 頁 <<< <br />"; if ( !empty($_SERVER["HTTP_X_FORWARDED_FOR"]) ) { echo "有經過期他代理主機:".$_SERVER["HTTP_X_FORWARDED_FOR"]; $temp_ip = split(",", $_SERVER["HTTP_X_FORWARDED_FOR"]); $user_ip = $temp_ip[0]; } else { $user_ip = $_SERVER["REMOTE_ADDR"]; } echo "<br /? 使用者IP : $user_ip "; session_register ("user_ip"); //注意這裡用單引號 echo '<br /><a href="ch17-4-2.php?'.SID.'">第二頁</a>'; ?>

安全性 Ch17-4-2.php <?php session_start(); //啟動 session echo ">>> 第 二 頁 <<< <br />"; if ( !empty($_SERVER["HTTP_X_FORWARDED_FOR"]) ) { $temp_ip = split(",", $_SERVER["HTTP_X_FORWARDED_FOR"]); $user2_ip = $temp_ip[0]; } else { $user2_ip = $_SERVER["REMOTE_ADDR"]; } echo "<BR />原來session的IP:".$_SESSION["user_ip"]; echo "<br />目前使用者IP : $user2_ip "; if ( $_SESSION["user_ip"] != $user2_ip ) { echo "您不是原來登入的IP,請正常登入!!<br>"; session_destroy (); } else { echo "OK! <br />"; } //注意這裡用單引號 echo '<br /><a href="ch7-4-1.php">第一頁</a>'; ?>