[phpBB3 外掛] 根據使用者文章數目限制簽名檔顯示

前一篇提到:『[教學] phpBB3 使用者簽名檔 url 連結加上 rel=”nofollow”』,本篇會將其做成後台,方便管理者可以從後台管理,這次加上一個新功能:『限制使用者顯示簽名檔』,根據使用者文章數量來決定是否顯示簽名檔,可以避免想要來打廣告的新註冊使用者,限制文章數量是一種方式,但是也不是最好的方式,phpBB3 本身可以在後台限制是否顯示使用者簽名檔,不過我想各大站長都會開放此功能,好讓使用者可以放個人網站或者是部落格,底下是外掛安裝方式: 安裝 打開 includes/acp/acp_board.php 找尋 # # Find # 'max_sig_img_height' => array('lang' => 'MAX_SIG_IMG_HEIGHT', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true, 'append' => ' ' . $user->lang['PIXEL']), 後面加上 # # after add # 'max_sig_post_count_limit' => array('lang' => 'MAX_SIG_POSTS_LIMIT', 'validate' => 'int:0', 'type' => 'text:5:4', 'explain' => true), 打開 viewtopic.php 找尋 # # Find # if ($row['user_sig'] && $config['allow_sig'] && $user->optionget('viewsigs')) 取代 # # Replace # if (($row['user_sig'] && $config['allow_sig'] && $user->optionget('viewsigs') && $row['user_posts'] >= $config['max_sig_post_count_limit']) || (isset($user->data['session_admin']) && $user->data['session_admin'])) 中文化 打開 language/zh_cmn_hant/acp/board. [Read More]

[教學] phpBB3 使用者簽名檔 url 連結加上 rel=”nofollow”

基於 Moztw 討論區 有大陸使用者註冊之後,在簽名檔加入一些廣告連結,為了降低 Google Page Rank,所以我們必須指示搜尋引擎「不要前往此網頁上的連結」或是「不要前往此連結」,可以參考 關於 rel=“nofollow”,phpBB3 編輯三個檔案就可以了,此修改不影響文章內容,只有針對簽名檔作用,底下是 patch 程式碼,可以參考看看 includes/bbcode.php --- phpBB3/includes/bbcode.php 2010-03-06 04:37:23.000000000 +0800 +++ www/includes/bbcode.php 2010-06-10 20:58:02.000000000 +0800 @@ -2,7 +2,8 @@ /** * * @package phpBB3 -* @version $Id$ +* @version $Id: bbcode.php 9461 2009-04-17 15:23:17Z acydburn $ +* @log 2010-06-10 appleboy $ * @copyright (c) 2005 phpBB Group * @license http://opensource.org/licenses/gpl-license.php GNU Public License * @@ -48,7 +49,7 @@ /** * Second pass bbcodes */ - function bbcode_second_pass(&$message, $bbcode_uid = '', $bbcode_bitfield = false) + function bbcode_second_pass(&$message, $bbcode_uid = '', $bbcode_bitfield = false, $bbcode_is_sig = false) { if ($bbcode_uid) { @@ -110,6 +111,13 @@ } $message = preg_replace($preg['search'], $preg['replace'], $message); + + /* + * 2010. [Read More]

[PHP] 好用 Debug PHP 工具 FirePHP for FireFox on CodeIgniter

之前介紹過 javascript FireFox Debug 工具 FireBug (Using firebug for firefox 除錯 javascript),今天來介紹 PHP 除錯工具 FirePHP,它可以輸出 PHP 資料到 FireBug console 介面,方便解決 PHP 相關問題,而不會去影響線上網站的畫面,安裝方式非常簡單,請先安裝 FireFox addon for FirePHP,重新啟動 FireFox 這樣就安裝成功了,接下來就是 include FirePHP Library 檔案,就可以正常使用了。另外還會介紹如何安裝到 CodeIgniter PHP Framework Firebug: https://addons.mozilla.org/en-US/firefox/addon/1843 FirePHP: https://addons.mozilla.org/en-US/firefox/addon/6149 底下先看畫面: $array = array("a" => "1", "b" => "2"); $firephp->info($array, "info"); $firephp->warn($array, "warn"); $firephp->error($array, "error"); Install FirePHP 安裝 Ref : http://www.firephp.org/HQ/Install.htm 在 Zend Framework 已經有開發完成,可以參考:FirePHP and Zend Framework 1.6 下載檔案:Download FirePHPCore library version 0. [Read More]

[FreeBSD]high performance caching reverse proxy: Varnish (安裝架設篇)

在上禮拜跟 DarkHero 兄聊到 How To Build a Scalable Web Site (3/6) 的上課講義,互相討論了 MySQL Load balance 以及 http reverse proxy 的方式,以前自己有用 HAProxy 當作 Web 平衡負載,順便紀錄了 HAProxy FreeBSD 安裝方式,這次要來介紹今天重點:Varnish Cache Server,在近幾年流行的 Caching 機制,大家會想到 Squid,只要您設定良好的 Squid 參數,它一定運作的非常穩定,然而它的核心依然是 forward proxy,要架設成 Reverse Proxy 還必需要設定一些參數才可以達到,是有一定的困難性,然而 Varnish Cache Server 底層就是高效能 caching reverse proxy,也因為 Squid 是 1980 年發展出來的,程式架構過於老舊,可以參考 ArchitectNotes 瞭解這部份詳情。也許您會問到 Varnish 可以架設成 forward proxy 嗎?答案是可以的,但是您也許不會這麼做,因為它需要 DNS 技術,以及需要一個非常大且複雜的 Varnish VCL(Varnish Configuration Language) file。 1. 今天要介紹如何在 FreeBSD 系統安裝,在介紹之前,系統必須先安裝好 apache,這樣才可以正確啟動,利用 ports 安裝: [Read More]

[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]

[講義]屏科大 PHP & MySQL 基礎教學投影片

這次非常開心受到國立屏東科技大學資管系邀請講課,主題是 PHP & MySQL 基礎介紹,來聽課的學生,就是資管系大三跟碩一的新生,第一次到屏科大,沒想到學校大到很誇張阿,在校園裡面都是騎機車上課,不像在東華大學,只能騎外環道,剩下的只能騎腳踏車,屏科大其實蠻偏僻的,離屏東市有一段距離,大概騎摩托車要 20 分鐘,至少今天回家是被用摩托車送到屏東火車站,感覺屏東還蠻熱鬧的。

這些資管的學生還蠻認真的,基礎實力還不錯,不過還是要在加強一下,看屏科大資管都在學 ASP.net,對於 html 有些基礎,大家好像都蠻喜歡拉物件,說這樣寫程式還蠻快的,不過 PHP 好像沒有類似工具,今天上課蠻順利的,至少大家都聽的懂,課堂作業都有寫出來,還蠻開心的,想聽聽大家對我上課的意見,看來只好等下次上課在問問看他們。