1 / 19

PHP

PHP. Cookie. Cookie. 將少量資料儲存 (by 檔案 ) 在遠端個人電腦的技術。 C:Documents and Settings 電腦帳號 Cookies (Windows NT/2000/XP) 或 C:Documents and Settings 帳號 Local SettingsTemporary Internet Files Cookie 的檔案名稱「可能」 是: tceb@km.tceb.edu[1].txt ( 就是 主機使用者帳號@網址 .txt ) 它的內容可能是:

kyros
Download Presentation

PHP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PHP Cookie

  2. 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 網域及路徑)15361695667229648268411619276829574842*

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

  4. Cookie的限制 • 每個使用者的瀏覽器只能支援(存取)300個Cookie • 每個Cookie的大小最多僅4k Bytes的容量 • 有些瀏覽器可以把Cookie的功能關掉,若關掉後 • Cookie就不能使用

  5. 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

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

  7. PHP Session

  8. 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內容就是「變數名稱|變數類型:長度:內容;」的組合

  9. 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

  10. 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( ) 函數

  11. 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( ) 才有作用。

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

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

  14. 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>'; • ?>

  15. 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>';?>

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

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

  18. 安全性 Ch17-4-1.php <?phpsession_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>';?>

  19. 安全性 Ch17-4-2.php <?phpsession_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>';?>

More Related