[心得] PHP 程式設計必知重點
網頁版: 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
02/14 12:07, 1F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章