1 / 25

PHP 介紹 (3)

PHP 介紹 (3). 上課大綱. Session & Cookie 接收客戶端表單資料 連結 MySQL 資料庫. Session & Cookie. Session & Cookie (1/8). 在互動式網頁中, Session 及 Cookie 提供了「記憶」有關使用者資訊的能力,例如當我們到某一些網站的時候,網頁會呈現您「第n次光臨」或是在網路書店選書,但還沒確定下單時,過程中選的書如何被「記憶」下來呢?在一般的互動性網頁大都運用了所謂的 Session 或 Cookie 的功能來處理這些工作。

nelson
Download Presentation

PHP 介紹 (3)

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介紹 (3)

  2. 上課大綱 • Session & Cookie • 接收客戶端表單資料 • 連結MySQL資料庫

  3. Session & Cookie

  4. Session & Cookie (1/8) • 在互動式網頁中,Session及Cookie提供了「記憶」有關使用者資訊的能力,例如當我們到某一些網站的時候,網頁會呈現您「第n次光臨」或是在網路書店選書,但還沒確定下單時,過程中選的書如何被「記憶」下來呢?在一般的互動性網頁大都運用了所謂的Session或Cookie的功能來處理這些工作。 • 即然是「記憶」使用者的資訊,除了用「記憶體」之外(但一般不致於用它,畢竟容量比較小),主要的就是利用「檔案」來儲存資訊,所以Session或Cookie其實都是一個「小」檔案,但這個檔案儲存的位置不同,「安全性」也不同。

  5. Session & Cookie (2/8) • Session是將使用者資訊儲存在Server 端暫存檔中,儲存的位置是依照 php.ini 的設定: • session.save_path = /tmp • 而Cookie是儲存在使用者自己的電腦裡(Client端),儲存的位置一般是放在: • C:\Documents and Settings\電腦帳號\Cookies

  6. Session & Cookie (3/8) • Session 的檔案名稱類似 : • sess_3dd484f2bab6a2d2509e9850dae3b897 • sess_ 開頭,加上 32字元的亂數雜湊編碼所組成的檔名 • Session檔案內容: • check|s:3:"yes";var1|s:1:"4";var2|s:1:"5"; • 變數名稱|變數類型:長度:內容;

  7. Session & Cookie (4/8) • Cookie 的檔案名稱類似 : • tai2@yahoo[2].txt • 主機使用者帳號@網址.txt • Cookie檔案內容: B cookie 名稱 b4lus0l2qbos3&b=3&s=71 cookie 值 yahoo.com/ cookie 網域及路徑 1024 342532096 32065574 4054363008 29832527 安全性、cookie有效日期、修改日期、建立日期、建立者

  8. Session & Cookie (5/8) • Cookie 的一些限制:因為Cookie常常用來存取使用者的資訊,為了怕被拿來濫用,或是佔用太多硬碟空間,所以對Cookie做出了以下的限制: • 每個使用者的瀏覽器只能支援(存取)300個Cookie • 每個瀏覽器只能針對同一個伺服器存取20個Cookie • 每個Cookie的大小最多僅4k Bytes的容量 • 有些瀏覽器可以把Cookie的功能關掉,若關掉後Cookie就不能使用

  9. Session & Cookie (6/8) • Session 範例: // s1.php <?php session_start(); // 啟動session $_SESSION[‘name’] = “dai”;// 建立session變數name值是dai $_SESSION['birthday'] = "11/15"; echo “Session Info -> ”.SID.“<br>”; // SID是session_start()時自動建立的常數 echo "<a href='s2.php?".SID."'>View</a>“; ?> // s2.php <?php session_start(); echo "name = ". $_SESSION['name'] ."<br>"; echo "birthday = ". $_SESSION['birthday'] ."<br>"; session_destroy(); //結束session ?>

  10. Session & Cookie (7/8) • Cookie 範例: setcookie("Cookie變數名稱","Cookie數值","期限","路徑","網域","安全") // c1.php <?php // 設定cookie名稱是name值是dai有效期限是1800秒後 setcookie (“name”, “dai”, time()+1800); setcookie (“birthday”, “11/15”, time()+1800); echo "<a href=‘c2.php’>View</a>“; ?> // c2.php <?php echo "name = ". $_COOKIE["name"] ."<br>"; echo "birthday = ". $_COOKIE["birthday"] ."<br>"; ?>

  11. Session & Cookie (8/8) • 使用session及cookie的注意事項: • 在使用setcookie( )、 session_start( )函數時,之前都不可以有任何的結果輸出,例如不可以在setcookie( )之前使用echo 輸出變數或將setcookie ( )嵌入在網頁中,其他html語法先輸出,否則會出現錯誤訊息。 • 如果沒有設定留存時間,雖然有指定cookie名稱及數值,但因為一設定就過期,結果是無法讀取您寫入的 Cookie。 • 如果要刪除cookie的話,直接把要刪除cookie名稱的值設定為空白即可。

  12. 接收客戶端表單資料

  13. 客戶端傳遞資料給伺服端的方法 • 瀏覽器可以使用2種方法來傳遞資料給伺服主機 • GET (透過url傳送資料) • POST (隱藏在HTTP Header中)

  14. 透過URL使用GET方法 • Server端接收GET資料傳遞的範例 • 請在瀏覽器上輸入下面的url • http:// server ip /g.php?name=dai&birthday=1115 // g.php <?php echo "name = ". $_GET["name"] ."<br>"; echo "birthday = ". $_GET["birthday"] ."<br>"; ?>

  15. 表單的GET方法 • 請建立下面的表單 <!– g.htm --> <html> <body> <form method="GET" action="g.php"> <input type="text" name="name"> <input type="text" name="birthday"> <input type="submit" value="Send"> </form> </bdoy> </html>

  16. 使用POST傳遞資料 • 請建立下面的表單 <!- p.htm --> <html> <body> <form method=“POST" action=“p.php"> <input type="text" name="name"> <input type="text" name="birthday"> <input type="submit" value="Send"> </form> </bdoy> </html> // p.php <?php echo "name = ". $_POST["name"] ."<br>"; echo "birthday = ". $_POST["birthday"] ."<br>"; ?>

  17. 連結MySQL資料庫

  18. 常用MySQL操作函數 • 建立連線,並回傳連線物件 $link = mysql_connect("Mysql主機名稱", "帳號", "密碼"); • 選取要操作的資料庫 mysql_select_db(“資料庫名稱“,$link); • 執行SQL命令,並傳回結果集 $result = mysql_query($query,$link); • 取得總資料筆數 mysql_num_rows($result); • 從結果集中取出下一筆資料 mysql_fetch_row($result); • 釋放結果集佔用的記憶體空間 mysql_free_result($result); • 結束連線 mysql_close($link);

  19. 建立測試用的資料庫 create database msg; create table msg( name char(30), dtime char(30), msg text); insert into msg values('dai',’2007-02-08 08:08:08','hello mysql'); insert into msg values(‘qq',’2007-02-08 06:06:06','hello mysql2'); grant all privileges on msg.* to dai@localhost identified by ‘1115';

  20. 連線到MySQL // msg_ls.php <?php $link = mysql_connect("localhost","dai","1115"); mysql_select_db("msg",$link); $result = mysql_query("select * from msg",$link); $num = mysql_num_rows($result); echo "num = $num <br>"; for($i=0;$i<$num;$i++) { $row=mysql_fetch_row($result); echo "<hr>"; echo "name = ".$row[0]."<br>"; echo "dtime = ".$row[1]."<br>"; echo "msg = ".$row[2]."<br>"; } mysql_free_result($result); mysql_close($link); ?>

  21. 執行結果

  22. 建立留言畫面 // msg_write.htm <form method=“POST” action=“msg_save.php”> Name: <br> <input type=“text” name=“name”><br> Message: <br> <textarea name=“msg”></textarea> <br> <input type="submit" value="Send"> </form>

  23. 儲存留言 // msg_save.php <?php $name = $_POST['name']; $msg = $_POST['msg']; $dtime = date("Y-m-d H:i:s"); $query = "insert into msg value('$name','$dtime','msg')"; $link = mysql_connect("localhost","dai","1115"); mysql_select_db("msg",$link); $result = mysql_query($query,$link); mysql_close($link); echo "<a href='msg_ls.php'>View</a>" ?>

More Related