[PHP Framework] How to implement Plurk API in CodeIgniter

ci_logo2 (by appleboy46) 很開心在12月看到 Plurk Release API 出來,而自己也跟網路上一些朋友合作開發 PHP implementation of Plurk API,Plurk (簡稱噗浪)在台灣這一兩年紅了起來,網路高手分別針對噗浪研究產生非官方的 API,現在官網 Release 出來,提供了 JavaPython 的 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,這是大家所期待很久的,裡面只有提供 PythonJava 的 example 範例,所以強者我朋友 roga 發起了 php-plurk-api 架構,來造福 PHP 使用者,當初在 roga 在 plurk 上面徵求是否有人想要一起開發程式,我就當場報名了,後來也陸續多了很多強者好友:WhatupChrisLiuLimit…等加入進行模組撰寫,很快的就產出了 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 進位方式:

/articles.php?id=0 union select 1,2,load_file(0×2f6574632f706173737764) 可以參考一下 MySQL LOAD_FILE(file_name),底下文章提到了很多方式解決。

[Read More]
php 

[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 底下檔案標題亂碼

CodeIgniter 底下提供了 force_download 函數,讓使用者可以直接下載檔案,但是會遇到中文的問題,IE 底下開起來檔名會是亂碼,force_download(‘filename’, ‘data’) 如果 filename 使用中文,測試 FireFox 跟 Chrome 都是沒問題的,唯獨 IE 開起來就是有問題,所以麻煩請修改 helpers/download_helper.php 這隻程式。 if ( ! function_exists('force_download')) { function force_download($filename = '', $data = '') { if ($filename == '' OR $data == '') { return FALSE; } // Try to determine if the filename includes a file extension. // We need it in order to set the MIME type if (FALSE === strpos($filename, '.')) { return FALSE; } // Grab the file extension $x = explode('. [Read More]

WordPress 2.8.5 Hardening Release

WordPress 在10月20號發出安全性的更新,大家快把 2.8.4 升級到 2.8.5,可以參考 WordPress 2.8.5: Hardening Release,這次更新最主要是在安全性的議題,Wordpress 團隊在過去幾個月已經開始針對 2.9 進行新功能上的開發,但是在 2.8 branch 的版本如果有安全性的漏洞,官方網站還是會提出修正的,以增加網站的安全。 底下是一些 Release 的安全性改良: A fix for the Trackback Denial-of-Service attack that is currently being seen. Removal of areas within the code where php code in variables was evaluated. Switched the file upload functionality to be whitelisted for all users including Admins. Retiring of the two importers of Tag data from old plugins 假如您的網站最近有受到攻擊,那可以利用官網提供的弱點掃描工具 WordPress Exploit Scanner 來針對網站檔案以及資料庫內容文章,還有 comment 的資料表,以及所裝的 plugin 檔案進行漏洞檢查。 升級方式很容易,可以參考之前寫的 [wordpress] 快速升級 Upgrade 2. [Read More]

[講義]屏科大 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 上去,至於繁體中文文件方面還沒更新,有時間會把它更新,如果有任何問題,可以先到論壇留言找我。

[RHEL]Installing PHP 5.1.x 5.2.x or 5.3.x on RedHat ES5, CentOS 5

最近幫公司處理一台 RHEL 機器,把原本的 PHP 版本 5.1.6 升級到 5.3.0,不過因為 5.3.0 把很多支援的函數都拿掉了,造成很 open source 套件都沒辦法支援,phpMyAdmin 也要換成 3 版以上才可以運作,PHP 5.3.0 已經不支援很多函數,可以參考 Deprecated features in PHP 5.3.x,有用到 ereg() 或者是 eregi() 都必須統統換成 preg_match(),最後終究因為 json 的關係,把 PHP 升級到 5.2 以上才有支援,參考了一篇 Installing PHP 5.2.x or 5.3.x on RedHat ES5, CentOS 5, etc,作法其實很容易,不用幾個指令就可以完成了 wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm 如果是 X86_64 的,請自行更換網址,這裡有些注意的是,你要升級 PHP 請利用下面: yum --enablerepo=remi update php 不過升級的時候,必須把 MySQL 也一併升級,不然會出現錯誤,原本的 MySQL 套件用 yum remove 移除掉,在利用 yum --enablerepo=remi 方式升級 MySQL 跟 PHP 套件,就可以了。 在 RHEL 裡面,PHP 5. [Read More]
Linux  php  RHEL