Jill 筆記
:::
:::
所有書籍
「PHP從入門到放棄實戰班」目錄
MarkDown
7-1 PHP條件判斷
1. 實戰之前
1-1 安裝開發環境
1-2 上課範例
2. HTML基礎
2-1 index.html
3. BootStrap響應式框架
3-1 格線系統
3-2 表格
3-3 導覽列
3-4 表單
4. PHP基本語法
4-1 註解
4-2 PHP資訊頁
4-3 PHP變數與陣列
4-4 各種訊息整理
5. 套用Smarty樣板
5-1 使用 Smarty
5-2 index.php
5-3 templates/index.tpl
5-4 php二維陣列
6. 資料庫規劃
6-1 MySQL常用資料類型一覽
6-2 讓PHP7連線到MySQL資料庫
7. PHP程式整併與樣板流程判斷
7-1 PHP條件判斷
7-2 PHP的變數過濾
7-3 練習自訂函數
7-4 templates/index.tpl
7-5 index.php
8. 製作表單並寫入資料到資料庫
8-1 index.php
8-2 post_form.tpl
8-2-1 post_form.tpl
8-3 templates/index.tpl
8-4 footer.php
9. 資料庫讀取
9-1 幾個常用的迴圈用法
9-2 讀出資料的安全性過濾並顯示
9-3 想想寫入還有什麼問題?
9-4 templates/post_form.tpl
9-5 index.php
9-6 templates/index.tpl
10. 編輯表單、刪除資料
10-1 顯示單筆資料
10-2 刪除事項
10-3 index.php
10-4 templates/post_form.tpl
10-5 templates/index.tpl
10-6 templates/show_one.tpl
11. 其他細節處理(補充)
11-1 小月曆
11-2 加入所見即所得編輯器
11-3 表單驗證
11-4 分頁功能
12. 練習
7-3 練習自訂函數
PHP從入門到放棄實戰班 ============ ### 零、體會一下被駭的感覺... 1. 請在網址欄`http://localhost/index.php?op=`後輸入底下內容試試(XSS攻擊): - <img src="http://cdn.pingwest.com/wp-content/uploads/2015/07/hacker-big.jpg"> - <script>alert('XSS')</script> ### 一、外來變數(7.超級全域變數) 1. 用post方法傳過來的,我們用 $\_POST\['變數名稱'\] 接收。 2. 用get方法傳過來的,我們用 $\_GET\['變數名稱'\] 接收。 3. 用 $\_REQUEST\['變數名稱'\] 同時可接收來自 post、get 和 cookie 的變數 。 ### 二、過濾外來變數 1. 外來變數通常來自使用者輸入或者比較容易竄改,所以,凡是外面傳來的變數,一律要進行變數過濾。 2. 一般讀出文字可用內建的 [htmlspecialchars()](http://php.net/manual/en/function.htmlspecialchars.php) 函數來過濾。 - 直接用 [htmlspecialchars($string)](http://php.net/manual/en/function.htmlspecialchars.php) 的話,預設只轉化雙引號,不對單引號做轉義,所以,這樣用htmlspecialchars($string,ENT\_QUOTES) 更好。 3. 亦可利用PHP內建的 [filter\_var() 函數](http://php.net/manual/en/function.filter-var.php)來過濾變數。 - 幾種常用過濾方法,[完整過濾器可由此查看](http://php.net/manual/en/filter.filters.php):
名稱
功用
FILTER\_CALLBACK
option可以讓開發者用自訂的function處理
FILTER\_SANITIZE\_STRING
去除標籤或特殊字元(html標籤會直接被消除)
FILTER\_SANITIZE\_ENCODED
與urlencode()相同,過濾特殊字串
FILTER\_SANITIZE\_MAGIC\_QUOTES
過濾針對SQL injection做過濾(例如單、雙引號)
FILTER\_SANITIZE\_SPECIAL\_CHARS
針對HTML做encoding,例如<會轉成<
FILTER\_SANITIZE\_EMAIL
過濾e-mail,刪除e-mail格式不該出現的字元(除了$-\_.+!\*'{}|^~\[\]`#%/?@&=和數字),例如a(b)@gmail.com會被過濾成ab@gmail.com
FILTER\_SANITIZE\_URL
過濾URL,刪除URL格式不該出現的字元
FILTER\_SANITIZE\_NUMBER\_INT
刪除所有字元,只留下數字與+-符號
FILTER\_SANITIZE\_NUMBER\_FLOAT
刪除所有字元,只留下數字和+-.,eE
FILTER\_VALIDATE\_INT
判斷數字是否有在範圍內
FILTER\_VALIDATE\_BOOLEAN
判斷布林值,1、true、on、yes都會判斷成true,反之為false,若是這些以外的值會回傳NULL
FILTER\_VALIDATE\_FLOAT
判斷是否為浮點數
FILTER\_VALIDATE\_REGEXP
利用regexp做驗證
FILTER\_VALIDATE\_URL
URL驗證
FILTER\_VALIDATE\_EMAIL
e-mail驗證
FILTER\_VALIDATE\_IP
IP驗證
- ```php $op= isset($_REQUEST['op']) ? filter_var($_REQUEST['op'], FILTER_SANITIZE_SPECIAL_CHARS) : ""; ``` - `filter_var($string, FILTER_SANITIZE_SPECIAL_CHARS)` 換行麻煩,因此若要輸出HTML的換行文字過濾仍建議採用 `htmlspecialchars($string, ENT_QUOTES);` 對$smarty樣板輸出有較好支援性 `{$content.directions|nl2br}` 4. 過濾數字: 數字的過濾,只要加個`(int)`即可,如`$sn=(int)$_GET['sn'];` 5. 不同過濾器的運用時機:要在php檔案中運算用的,請用PHP來過濾,要寫入資料庫的,用資料庫的`real_escape_string()`來過濾。