尋覓理想的 PHP 編輯器

你使用甚麼軟件來編輯 PHP 源碼、除錯、和管理項目?你對它滿意嗎?J Armando Jeronymo 最近因為某些原因不再使用本來的編輯器,於是展開了一趟 PHP / HTML / CSS / JavaScript 編輯器尋覓之旅,他在 How I Chose My Programming Editor 中講述了他怎樣訂立評審標準、遴選經過、與及他心目中的「完美」編輯器。 繼續閱讀 »

地理定位 (Geolocation):比你想像的容易

Jeremy Kendall 在 PHP Architecture 有一篇文章介紹怎樣使你的網站加入地理定位 (geolocation) 的功能,好處是可以根據訪客的身處的位置,提供適合的內容和語言,令他們享受更貼心的服務。加入這項功能比你想像的容易,甚至完全免費,Jeremy 提供了兩個解決方案,任何一個都可以在十分鐘內搞定。

繼續閱讀 »

PHP 開發人員比較喜歡以 Windows 為開發平台

以 Linux 為平台的網站伺服器遠比 Windows 的多,相信沒有人有異議,網站的編程語言則以 PHP 最受歡迎,相信爭議性也不大(可能的競爭對手只有 Java),這樣說來難道微軟這個電腦業的巨人在網站開發的環境中便毫無優勢嗎?未必,根據 Zend 最近針對全球使用 Zend Framework 開發人員所做的調查,在 Windows 上編寫 PHP 的人佔了 42%,排名第一,第二位的 Linux 則是 38.5%,MacOS X 則在第三位,19.1%。不過網站的運作平台 Linux 則以 85% 遙遙領先其他操作系統。 繼續閱讀 »

Google 教你優化 PHP,PHP 開發團隊指內容不確

Google 的 webmaster Eric Higgins 寫了一篇文章介紹怎樣優化 PHP,文章刊登不久,PHP 開發團隊其中一員 Gwynne Raskind 發文提出異議,指 Eric 所說的與事實不符,有些甚至完全相反,在 PHP 5 上幾乎沒有一項 Eric 的優化技巧能帶來實質的好處。我們摘錄了比較具爭議性的幾點,看看誰是誰非。 繼續閱讀 »

認識 PHP 的 Hashing Functions

Hashing function (散列函式) 在網頁應用中被廣泛採用,從數碼簽署、錯誤檢測、登入驗證、到壓縮儲存空間,由於它的原理比較複雜,很多人把它跟加密函式混淆,對於如何運用 hash function,如何選擇合適的 hash function,和它的優點缺點都不清楚,本文嘗試解答這些問題。

Hashing 是甚麼?

簡單地說,Hashing 是一種數據影射 (mapping) 的算法 (algorithm),通常用來把一大串不定長度的數據影射到一個固定長度的、較短的數據,這個固定長度的數據稱為 hashing value (散列值)。 繼續閱讀 »

PHP Cheat Sheets

Cheat Sheet 又稱做「作弊紙」、「小抄」或「備忘紙」,不過我比較喜歡稱她做「速記片」,它是把一些常用的東西用很簡潔的格式紀錄下來方便快速檢查和重溫,當你嘗試從 一個字串中抽取一部份內容,應該調用 PHP 的 mid()、substr()、還是 substring() ?1.3 == 1.30 是否為真?如果你有類似的煩惱,下面列出的免費 PHP 速記片一定可以幫的上忙: 繼續閱讀 »

解除 PHP max_execution_time 的限制

很多人都知道 php.ini 中預設的最長執行時間是 30 秒,這是由 php.ini 中的 max_execution_time 變量指定,倘若你有一個需要頗多時間才能完成的工作,例如要發送很多電子郵件給大量收件者,或者要進行繁重的數據分析工作,伺服器會在 30 秒後強行中止正在執行的程式,這個問題其實有解決辦法的。

最簡單當然是修改 php.ini 中 max_execution_time 的數值,不過不是所有人都有權修改 php.ini,例如使用網頁寄存的開發人員,伺服器上的 php.ini 由很多網站共同使用,所以不能隨意修改。

另一個辦法是在 PHP 程式中加入 ini_set(‘max_execution_time’, ’0′),數值 0 表示沒有執行時間的限制,你的程式需要跑多久便跑多久。若果你的程式仍在測試階段,建議你把時限設定一個實數,以免程式的錯誤把伺服器當掉。

用 PHP 實現 HTTP 身份驗證

HTTP 身份驗證 (HTTP authentication) 是一種十分常用而容易實作的驗證方法,它倚賴網頁伺服器的內置功能,大量縮短所需編寫的程式碼,對於用戶驗證的要求不高的系統,是一個很實用的驗證方法。Evert Pot 在他的網誌上討論了如何用 PHP 實作這種用戶驗證。

基本驗證 (Basic Auth)

HTTP 身份驗證有兩個主要的驗證方案:「基本驗證 (basic authentication)」和「摘要驗證 (digest authentication)」,其中基本驗證比較容易實作,所以也比較常見,以下是一個以 PHP 實作的基本驗證: 繼續閱讀 »

十大技巧提升你的 PHP 實力

Smashing Magazine 的網站,Glen Stansberry 提出十個進階 PHP 技巧,可以即時提昇你的 PHP 編程實力,其中包括 SQL 注入攻擊的「作弊表」、簡化判斷句中的 else 部分、在不得已的情況下才使用正規表達式、三元運算子、Memcached 數據庫緩存系統等等,以下是詳細的內容。

PHP 在 1995 年從一個不起眼的編程語言開始,多年來迅速發展,現在已經是其中一種最流行的網絡開發語言,許多熱門網站均採用 PHP 來開發,絕大多數的程式和網站項目都是由這種流行語言寫成。

由於 PHP 如此受歡迎,任何網站開發人員幾乎都不能不認識 PHP,這份教程是為那些剛剛完成了 PHP 的學習初階,捲起衣袖準備大幹一番的人,下面列出的十個優秀技巧,是 PHP 開發人員必須學習,並在每次編程時使用它們,這些提示可以加快你們對 PHP 的熟練,使程式碼跑得更快捷,更簡潔,性能上更優化。 繼續閱讀 »

PHP 碰上 Python

用來編寫網頁應用的語言多不勝數,人們總喜歡拿來互相比較,初學者也有興趣知道不同語言的特性,這次我們介紹 Ashish 所寫的「PHP 碰上 Python」,從語言特性到執行效能,比較 PHP 和 Python 兩種語言。

我們根據什麼來判斷一種編程語言比另一種好?有人說是靈活性、開發環境的友善程度、牌照政策(開源的或商業性的)、社區、可移植性、動態數據類型、 支援不定數目的函式參數、把物件表達為一串字符的能力等等,文檔當然也是重要的因素,特別是當你尚未熟悉這種語言而需要提升你的技巧的時候。 繼續閱讀 »

PHP 基本分頁技巧

作為一個網頁開發人員,你經常要用容易閱讀的格式把數據顯示給用戶,舉例說你要從數據庫讀取一份雇員名單,並在網頁上羅列出來,若果名單只有區區十 多人,用一個簡單迴圈把所有人列印出來便好了,不是很簡單嗎?但若果你有五十名雇員又如何呢?一百人?一千人?把這麼多人一口氣羅列出來顯然不是一個好主意,Crayon Violent 在 PHP Freaks 寫了一篇教學文件,介紹如何透過 PHP 來實作分頁。

同一時間從數據庫扯出所有數據,你的用戶可能會一面呆等一面納悶,系統究竟發什麼神經老是沒有輸出?千呼萬喚有結果了,得到的竟然是一本完完整整的「三國演義」,在一頁版面上列印出來!據說古人的確是把不論長短的文章寫在一匹絹布上,一種好像稱為卷軸的東西,詳情我也不清楚,但廿一世紀的你不會也這麼做吧?

聰明的做法是把一份長長的名單分割成很多小段,每次只從數據庫提取及顯示一段,這可以大幅降低伺服器的工作量,也提升網頁的下載速度,用戶也比較容易消化屏幕上的資料,不會一下子被你弄至消化不良,這種做法就是分頁。 繼續閱讀 »

PHP 加密技術指南(二之二)

本文轉載了 資深的 PHP 開發人員 Octavia Andreea Anghel 在 DevX.com 發表的 PHP 加密技術的教學文件第一部分介紹了 PHP 預設的加密功能,及擴充模組 MCrypt 的安裝及應用方法。本文將會繼續介紹其他擴充模組。

用 MHash 建立散列值

MHash 是一個免費的函式庫,提供大量散列值算法,這些算法可用來計算校驗值 (checksum)、訊息摘要 (message digests)、及建立數碼簽署。 繼續閱讀 »

PHP 加密技術指南(二之一)

資深的 PHP 開發人員 Octavia Andreea Anghel 在 DevX.com 發表了一篇 PHP 加密技術的教學文件,討論如何取得和安裝各種 PHP 加密技術軟件包,以提高你的 PHP 應用程式的安全性。本文是系列的第一部分,第二部分在這裡。 在理想世界,加密和保安技術根本無須存在,但現實世界遠非完美,所以軟件開發商要花費大量時間和金錢,為應用程式設立保安措施,加密只是整個保安拼圖中的 一小塊,其他的尚有 SSL / TLS、數碼證書、數碼簽名等等。本文將會介紹如何用 PHP 來實作最常見的加密算法,除了描述 PHP 預設的加密功能,你也會看到各種各樣加密函式庫和軟件包。

本文所有範例均使用一個短小的純文本檔 textfile.txt,它就是密碼學所謂的「明文」(plaintext),明文加密後便變成「密文」(ciphertext)。本文使用的「明文」如下:

For every difficult and complicated question there is an answer 
that is simple, easily understood, and wrong. HL Mencken 

繼續閱讀 »

PHP vs .NET,如何抉擇?

很多人都曾經問過,或者被人問過,PHP 和 .NET 兩者哪一個比較好?Yahoo Answers 每隔一段時間便有人提出這個問題,很多網誌也參予了討論,大部分討論都集中於語言本身和開發工具的優劣,這方面受很多主觀因素影響,所以討論永遠沒完沒了,一位資深的新加坡 PHP 兼 .NET 開發人員在他的網誌上從另一個角度看這個問題。

作者首先粗略地調查一下網上有哪些比較 PHP 和 .NET 的文章,對的,就是使用 Google 來搜尋,得到大概二百六十萬筆結果,以下是作者認為比較有水準的三篇:

  1. PHP vs. ASP .NET Redux
  2. PHP Vs ASP.net
  3. J2EE vs ASP.NET vs PHP

作者避開語言的技術細節,嘗試從一個開發人員在職業生涯的角度,即是從一個從餬口的角度,來看這個抉擇過程。 繼續閱讀 »

PHP 是否理想的第一語言?

根據最新的統計,全球三份之一的網站使用 PHP 作為開發語言,儘管如此,還是不斷有懷疑論者質疑,PHP 是否一個好的編程語言,資深芬蘭 PHP 開發者 Jani Hartikainen 在他的網誌說:「PHP 是偉大的!」他甚至鼓勵初學者以 PHP 作為第一語言。

曾經有人說過,PHP 是一個有害的第一語言,因為它灌輸了不良的編程習慣,這是真實的嗎?說這種話的人很多本身並不喜歡 PHP,而且,他們所持的理由通常與事實不符。

Jani 認為,如果你有興趣開發網頁應用程式,PHP 絕對是一個良好的第一語言,甚至說它是最理想的第一語言也不為過。 繼續閱讀 »

2008 年 4 月 PHP 使用統計

Nexen 發表了 2008 年 4 月份的 PHP 使用統計,他們調查了 2,800 萬個伺服器,涵蓋了 200 萬個 IP 地址,刪除沒有架設網站、無法聯絡、網絡服務供應商和使用 domain parking 的網域後,共有 1,250 萬個網站參與了這次統計,內容摘要如下,統計的方法可參閱 la section phpversion

PHP on Internet

這張圖表顯示了 PHP 在全球互聯網上的市場份額是 33.30%,與前一個月差不多,PHP 的市場份額一直很穩定。 繼續閱讀 »

得到更好 PHP 工作的十個秘訣(第二部份)

我們已經在本文的第一部分討論過 PHP 開發人員尋找更好的工作的其中五點秘訣,以下是另外五點:

  1. 做好準備。適應新的企業文化你應該嘗試學習新公司各方面的業務與及公司文化,並且在求職面試 中強調這是你希望在這間公司工作的最大動機,你也應該表示願意去適應公司中各種你不熟悉的文化,永遠不要推動你的個人喜好,除非這是一件對公司業務有益的事。例如,公司採用 X 開發架構,不要純綷因為你喜歡 Y 架構而推銷它,把應用程式從 X 開發架構重整到 Y 往往是麻煩的,因為這涉及時間和金錢。如果你知道該公司所用的函式庫和工具與你的喜好不同,而你真的希望在這間公司工作,在求職面試時便應該強調你願意適應。 繼續閱讀 »

得到更好 PHP 工作的十個秘訣(第一部份)

經常有人埋怨市場上付給 PHP 開發人員的工資太低,或者 PHP 開發人員競爭激烈以致找工作困難,也有人說 PHP 開發人員的地位比不上其他編程語言,例如 Java 或者 Oracle 數據庫的 PL/SQL。PHP Classes 的 Manuel Lemos 為廣大的 PHP 愛好者提供十個找工作的秘訣,這些秘訣其實並不侷限於 PHP 的開發人員,所有資訊科技行業的工程人員都可以從中得到某些啟示。

  1. 裝備自己,脫穎而出對於那些埋怨自己工資太低,或者找工作太困難的人,Manuel 認為這純粹是一種誤解,工作市場同樣依照經濟學上的供求定律運作,倘若職位的空缺太少,求職的人數太多,在劇烈的競爭下求職人自然要接受較低的工資。然 而,現實的情況是 PHP 是市場上居領導地位的網站開發語言,市場對合格的 PHP 開發人員的需求很大,很多公司願意支付他們高薪厚祿。同樣的情況也發生在 Java 上,Java 就業市場通常平均要付出較高的工資,這是因為 Java 需要較複雜的應用架構和工具,Java 的職位往往要求應徵者具備大學學歷。若果你沒有電腦或者相關領域的大學學歷,Manuel 強烈建議你考取一個。若果你曾經因為太難或者太昂貴而放棄,Manuel 也建議你儘快回到學校並完成你的學位課程。這樣做的確不容易,但你一定不會對你的犧牲感到後悔。若果真的不可能考取大學學歷,不妨考慮市面上眾多的 PHP 培訓課程和認證考試,雖然它們比不上一個大學學位,但為了可以脫穎而出,這些資格總比什麼都沒有好。 繼續閱讀 »

網頁剪輯應用實例──用 PHP 製作一個「當年今日」的物件

網絡上有數以千計提供服務網頁的網站,它們供應有趣的,甚至富有教育性的資訊,你可以把這些資訊整合到你的網頁裡面,或者製作一個小裝置 (widget) 讓其他人無縫地整合這些資訊到他們的內容傳送平台。Hasin Hayder 在他的網誌介紹怎樣用 PHP 剪輯 Scopesys 的網頁製作一個「當年今日」小裝置。

Hasin 首先鄭重提醒大家,在剪輯人家網頁 (web scraping) 的資料時,必須要仔細閱讀版權內容,在任何情況下都不應該違反版權法。

這個小裝置用 PHP 寫成,讀取 Scopesys 的「當年今日」網頁,並顯示以下類型的內容: 繼續閱讀 »

Zend 認證工程師

不少 PHP 開發者都認同考取 Zend 認證工程師 (ZCE) 是一個確立個人 PHP 開發水平的重要一步,它也可以用作評估自己的技能,與及向同事和潛在客戶展示自己的經驗的途徑。Zend 在他們的網頁介紹了考取 Zend 認證工程師的好處。其中一位 ZCE Alex Netkachov 在自己的網誌分享他考取這個資格的經驗:甚麼是 ZCE,如何準備,如何通過它,通過它之後會發生甚麼事。

有關 Zend 認證工程師,官方的消息來源是 Zend.com,尤其是它們的認證服務網頁,在那裡你可知道如何成為 ZCE,一張推薦書籍名單,與及考取了 ZCE 資格的工程師黃頁

若果你有任何有關 Zend 認證的疑問,可以聯絡工程師黃頁上任何一位優秀的工程師,Alex 表示他每月收到大概 10 個查詢 ZCE 的電郵,招聘 PHP 人才的雇主也會透過工程師黃頁找到他。電郵中最常問的問題是如何準備 ZCE 考試,對 ZCE 考試的看法,間中也有人問取得 ZCE 後的好處及 ZCE 對職業生涯有何進益。 繼續閱讀 »