[心得] PHP 程式設計必知重點

看板Programming作者 (stOOrz)時間18年前 (2007/02/14 11:23), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/2 (看更多)
網頁版: http://blog.stoorz.org/archives/2007/02/14/49/ 下面這兩個網頁提供了十個 PHP 程式設計的提示,一篇文章各五個,總共加起 來十個。看起來標題好像不太一樣?不用懷疑,其實這是同一個系列的文章,第 一篇是 Tip 1 到 Tip 5,第二篇是 Tip 6 到 Tip 10。 - 10 Tips That Every PHP Newbie Should Know http://www.phpbuilder.com/columns/vaska20050722.php3?aid=948 - 10 Tips That Every PHP Developer Should Know, Part 2 http://www.phpbuilder.com/columns/vaska20050812.php3 對我比較有用大概有下面幾個 Tips Tip 1: 使用 MySQL Connection Class 也就是把 MySQL 一開始要 initialization 的 method 寫成 class class DB { function DB() { $this->host = “localhost”; // your host $this->db = “myDatabase”; // your database $this->user = “root”; // your username $this->pass = “mysql”; // your password $this->link = mysql_connect($this->host, $this->user, $this->pass); mysql_select_db($this->db); } } 放在公用的函式庫裡面,未來可以重複使用,每次要用的時候只要 new 一 個新的 DB object 出來 // calls it to action $db = new $DB; 這樣就可以省略一開始資料庫起始化的步驟。 Tip 3: 查詢 database 之前要先處理 query string 為了要避免 SQL Injection,呼叫 mysql_query() 之前要先將 special characters 作 escape 處理,也就是幫 special characters 加上 slash。 function escapeString($post) { if (phpversion() >= ‘4.3.0′) { return array_map(’mysql_real_escape_string’,$post); } else { return array_map(’mysql_escape_string’,$post); } } Tip 6: 雙引號和單引號的分別 簡單來說就是,雙引號裡面的變數會被解譯,單引號裡面的變數不會被解譯 ,也就是說 PHP 會 parse 雙引號裡面的字串。如果引號內只是單純的字串 ,用單引號會比較快。 Tip 9: 安全地查詢資料庫 如果利用 mysql_query() 查詢資料庫這裡的 code 沒有寫好,PHP 預設會 把錯誤訊息列印到使用者的瀏覽器,這會造成不可預期的資訊外洩,讓有心 人士或是駭客利用這些資訊來攻擊你的網站。所以可以寫 wrap functions 來取代原來的 mysql_query() 和 mysql_num_rows()。 function safeQuery($query=”) { global $db; if (!$query) return false; return mysql_query($query, $db->link); } // returns an array of records function fetchArray($query=”) { if ($result = safeQuery($query)) { if (mysql_num_rows($result) > 0) { while ($arr = mysql_fetch_assoc($result)) $rows[] = $arr; return $rows; } } return false; } // returns a single record function fetchRecord($query=”) { if ($row = safeQuery($query)) { if (mysql_num_rows($row) > 0) { return mysql_fetch_assoc($row); } } return false; } 用這三個函式來安全地存取資料庫,另外可以把這三個函式放到公用函式庫 ,讓程式碼可以重複使用。 網頁版: http://blog.stoorz.org/archives/2007/02/14/49/ -- stOOrz http://blog.stoorz.org/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.17.40 stOOrz6:轉錄至看板 PHP 02/14 11:23

02/14 12:07, , 1F
推這篇 借轉blog
02/14 12:07, 1F
文章代碼(AID): #15qe2K-0 (Programming)
文章代碼(AID): #15qe2K-0 (Programming)