17
建構動態網站 2PHP () 講師:David Malan 哈佛大學公開課 by Bater 2014.3 課程連結

哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

  • Upload
    -

  • View
    172

  • Download
    1

Embed Size (px)

Citation preview

Page 1: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

建構動態網站 第2講PHP (續)講師:David Malan

哈佛大學公開課 by Bater 2014.3

課程連結

Page 2: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

前情提要

● 空間申請● 域名申請● CNAME設定

Page 3: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

最佳實踐通常會設定網址在根目錄下一層(如http、htdocs、public_html 等,名稱可以不同),避免惡

意使用者窺探重要文件 (例如config.php)此為最佳實踐!!

Page 4: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

非放在這個目錄下的檔案無法透過網址直接瀏

覽,增加安全性

Page 5: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

XML:

● 類似可以自行定義的HTML● 由很多的Key -Value (鍵-值)組成

● 不用自己寫解析程式,就可以輕易的用標準規則取得裡面

的內容

● 得到一個很大的Hash或Map● 有時候資料量不大或使用者不多,(例如小型專案)可以用

XML讀寫資料取代資料庫

Page 6: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

XML優點

● 現成的讀寫方法支援,不需要自己寫

● XML格式校正,可以預防錯誤

● 有層級概念 (CSV等逐行資料型態所缺乏,MySQL雖然也

沒有,但可以合併)● 可以實現搜索的功能 (透過XPath,XML路徑語言)

Page 7: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

XML注意事項

1. 檔案大小最好在100MB以內,否則效能很差

Page 8: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

更多資料儲存方式

CSV● 逗號分隔變量

● 資料本身如果有逗號,就

需要用引號括起來

● 很容易下載,用Excel讀取

TSV● TAB分隔變量

PSV● 豎線分隔變量

Page 9: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

Q&A

Q:如何決定該使用XML還是

database存取資料?A:沒有一定,一般而言以效

能為考量。

因為XML每次讀取都需要整

份檔案從頭讀到尾,如果每分

鐘會有數名使用者同時使用,

建議就要轉換為資料庫,因為

有緩存會比較省效能

Q:XPath是不是也可以作到

類似SQL的效果?A:有一種語言叫做XQuery,但並未有重大突破,一般而言

還是SQL較具彈性,要怎麼料

理資料都可以

Page 10: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

● X-powered-by回傳瀏覽器運行的server版本,例如PHP 5.2.5但有安全疑慮,並非最佳實踐

只要改一行設定就可以把版本號隱藏

● session意味著保存

伺服器保存瀏覽器的狀態

● cookie有安全性疑慮

可能會被別人截取內容(例如開放的WIFI),盜用狀態與帳號

Page 11: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

安全性的解決方案

用SSL加密 (HTTPS協定)缺點:

● 佔機器運算資源

● 需要IP唯一 (因為host也被加密了)● 要花錢

Page 12: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

超全域變數

$_GET、$_POST$_SESSION● 就像容器

● 前兩者是使用者送出的表單內容,後者開發者可以自己決

定把哪些放進去

● 預設是沒有內容的

$_SERVER內建兩個變數 (更多)$_SERVER["HTTP_HOST"]$_SERVER["PHP_SELF"] (小心跨站攻擊)

Page 13: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

樣式與資料處理分離

● 有種作法是一個PHP表單作樣式

● 另一個處理流程

● 但這樣有個問題,如果流程有錯誤

● 要回到樣式,還需要顯示之前的輸入內容

Page 14: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

PHP內建函式

● htmlspecialchars()○ 將特殊字元固定為文字

● isset()○ 檢查變數是否存在

● rtrim()○ 去除字尾空白

Page 15: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

SEESION特性

SESSION通常存在一個叫/temp的目錄下

需要用的時候會去讀取

一段時間會系統清空

(也可以用存入資料庫取代,就會永久保存)

Page 16: 哈佛公開課_E-75 建構動態網站 第2講 PHP(續)

三種提示等級

● 注意

○ 輕微,可以不理會

● 警告

○ 不太對勁,但可以略過錯誤繼續執行

● 錯誤

○ 程式沒辦法繼續跑下去