很開心在12月看到 Plurk Release API 出來,而自己也跟網路上一些朋友合作開發 PHP implementation of Plurk API,Plurk (簡稱噗浪)在台灣這一兩年紅了起來,網路高手分別針對噗浪研究產生非官方的 API,現在官網 Release 出來,提供了 Java 跟 Python 的 Example,我想因為 Plurk 是用 Python 寫出來的,所以提供了範例,但是 API 出來沒多久,roga 就集合了網路一些強者,一起開發了 PHP Plurk API,我也拿了此 API 在實作到 CodeIgniter Framework,讓在使用此套 open source 的使用者可以享用 Plurk API。不過從2009.12.29日之後,Plurk 官網有限制每天只能 call 50.000 次,已經蠻多了,不要操掛 Plurk 的機器阿。
[Read More][PHP] Release 噗浪 php-plurk-api 1.2 Beta.
Plurk 官網在2009年12月4日提供了 API platform,這是大家所期待很久的,裡面只有提供 Python 跟 Java 的 example 範例,所以強者我朋友 roga 發起了 php-plurk-api 架構,來造福 PHP 使用者,當初在 roga 在 plurk 上面徵求是否有人想要一起開發程式,我就當場報名了,後來也陸續多了很多強者好友:Whatup、ChrisLiu、Limit…等加入進行模組撰寫,很快的就產出了 php-plurk-api 1.2 Beta,也利用官方網站 API 來撰寫註解,然後搭配 phpDocumentor 產出文件,這一切都集結了很多人的努力,也讓官方網站放上了大家共同結晶。 如果大家想使用,可以從 php-plurk-api source code. 下載。^^ 其他延伸: Release: php-plurk-api 1.2 Beta. php-plurk-api website.
PHP+MySQL 環境下 SQL Injection 攻防戰
在 OurMySQL Blog 看到這篇:『PHP+MySQL环境下SQL Injection攻防总结』寫的相當不錯,裡面有一些觀念,可以讓初學 PHP & MySQL 的使用者知道如何防護 SQL Injection (資料隱碼),內容提到 magic_quotes_gpc 在 on 跟 off 的狀況如何防護,但是可以清楚看到 PHP 官方文件提到在 PHP 5.3.0 magic_quotes_gpc 預設已經是關閉,在 PHP 6.0 之後正式移除,所以內容寫的 magic_quotes_gpc 狀況,可以大致上瞭解就好,真正防護 SQL Injection 是需要寫程式或者是考慮很多方式去防護。 一般在做文章查詢,都會使用 /articles.php?id=123 網址傳送方式,以 $_GET[‘id’] 送到 PHP 頁面去做處理,如果駭客想要測試是否可以利用 SQL Injection 做攻擊,可以在網址列加上 /articles.php?id=123’,請注意網址後面多出 ’,如果沒有把 $_GET[‘id’] 做處理的話,就會出現底下錯誤訊息:
supplied argument is not a valid MySQL result resource in 這是因為平常在寫 SQL 語法,會是底下這種寫法:
$sql = "SELECT id, title, content FROM articles WHERE id = '".$_GET['id']."'"; $result = mysq_query($sql);因為沒有處理跳脫字元 ',所以造成 SQL 語法錯誤,才會出現該錯誤訊息,但是如果又針對跳脫字元做防護得時候,還有另一種攻擊方式:
/articles.php?id=0 union select 1,2,load_file(char(47,101,116,99,47,112,97,115,115,119,100)) 其中的數字就是/etc/passwd 字符串的ASCII,除此之外,還可以使用字串 16 進位方式:
[Read More]/articles.php?id=0 union select 1,2,load_file(0×2f6574632f706173737764) 可以參考一下 MySQL LOAD_FILE(file_name),底下文章提到了很多方式解決。
[Perl&PHP] time() and Class::Date 日期轉換運算
為了看個 MLB 美國職棒,寫了一個網站:美國職棒影片收集站,裡面的內容影片連結,以及連結說明,都是利用 Perl 搭配 MySQL 資料庫,以及 CodeIgniter PHP Framework 寫出來的,美國 MLB 開打時間,會比台灣晚一天的時差,所以在 PHP 跟 Perl 都要針對時間作修改以及轉換運算,那底下會寫 PHP 跟 Perl 如何控制時間,還有資料庫如何設計,會比較適當。
PHP 日期轉換 MySQL 在資料庫時間格式方面,最主要常見的兩種儲存方式,一種就是 MySQL 預設 datetime,顯示的格式就會像是
2009-11-03 20:10:43,另一種就是存成 UNIX time 格式,可以設定為 int(11),這兩種其實都可以使用,在 phpBB2 是採用後者的方式,因為 open source 要支援多種資料庫,但是又要統一程式碼,所以乾脆用 UNIX 的時間標記,這樣比較好轉換時區,如果使用 UNIX 格式,可以利用 time() 函式來取的。
[Read More][CodeIgniter] 解決 CI 下載函數 force_download 在 IE 底下檔案標題亂碼
WordPress 2.8.5 Hardening Release
[講義]屏科大 PHP & MySQL 基礎教學投影片
這次非常開心受到國立屏東科技大學資管系邀請講課,主題是 PHP & MySQL 基礎介紹,來聽課的學生,就是資管系大三跟碩一的新生,第一次到屏科大,沒想到學校大到很誇張阿,在校園裡面都是騎機車上課,不像在東華大學,只能騎外環道,剩下的只能騎腳踏車,屏科大其實蠻偏僻的,離屏東市有一段距離,大概騎摩托車要 20 分鐘,至少今天回家是被用摩托車送到屏東火車站,感覺屏東還蠻熱鬧的。
這些資管的學生還蠻認真的,基礎實力還不錯,不過還是要在加強一下,看屏科大資管都在學 ASP.net,對於 html 有些基礎,大家好像都蠻喜歡拉物件,說這樣寫程式還蠻快的,不過 PHP 好像沒有類似工具,今天上課蠻順利的,至少大家都聽的懂,課堂作業都有寫出來,還蠻開心的,想聽聽大家對我上課的意見,看來只好等下次上課在問問看他們。
利用 PHP MySQL Quota-Tool 來限制 MySQL 存取空間大小
在酷!學園發現這篇,有人問到如何限制 MySQL 的使用空間大小,我第一個想到的就是 Linux quota 指令限制大小,看回文有一篇利用 MySQL 來解決此問題:MySQL Quota-Tool,它利用了 MySQL INSERT 跟 CREATE 的權限控管,來達成限制,當資料庫大小超過您所設定的限制,系統就會拔除您的 INSERT 跟 CREATE 權限,如果沒有超過,就會將權限設定回去,基本上非常簡單,首先要先建立一個專屬控管每個資料庫的 database
CREATE TABLE `Quota` (`Db` CHAR(64) NOT NULL, `Limit` BIGINT NOT NULL, `Exceeded` ENUM('Y','N') DEFAULT 'N' NOT NULL, PRIMARY KEY (`Db`), UNIQUE (`Db`));[Read More]
[新聞] CodeIgniter v1.7.2 Released
CodeIgniter 終於 Release V1.7.2 版本了,官方網站也公佈了此消息,那這次跟 v1.7.2 版本有哪些不一樣呢,我想最主要應該是支援 PHP 5.3.0 了
- 相容於 PHP 5.3.0
- 新增 Cart Class 類別
- 改善 Form helper 函數
- 新增 is_php() 到 Common functions 來更有善的比較 PHP 版本
- 無數個 bug 修正
- 修改 show_error() 函數功能 更多的 bug 修正,可以觀看
change log,我也順便了 send-pr 給 FreeBSD ports maintainer 請他 update 到 1.7.2:ports/138848,台灣的官網也需要來修正了,已經更新了 v1.7.2 上去,至於繁體中文文件方面還沒更新,有時間會把它更新,如果有任何問題,可以先到論壇留言找我。