2008年9月26日 星期五

[野人獻曝] 如何實作一個簡單的短網址服務站(前言)

善意提醒:
本系列文隨時有腰斬的可能,若您需要根據本系列文進行實作的話,
請先作好可能會無法繼續下去的心理準備。

==正文開始==

事前準備項目

  • 一台可以跑ApacheMySQLPHP的主機
  • 一個看起來還蠻酷的網址
  • 一個不會讓你想砸了它的文字編輯器
  • 一個夠清晰的腦袋
關於第一個和第二個項目,
可以考慮去租一般的虛擬主機,
通常可以一次解決!

第三個項目的話,我個人推薦Notepad++啦,
當然你若有更好的選擇,也可以直接使用!

至於第四個項目,就請施主自求多福了!

第一步


當然先從創造資料庫開始囉(不然你怎麼放那些原始網址資料?),
請打開你的phpmyadmin
然後將這段指令交給phpmyadmin執行。
注意:如果你是用虛擬主機的話,請不要直接執行那段指令,否則會有出錯的問題。
請先在你的網站控制臺直接創造一個資料庫,再把上述SQL指令中的CREATE......複製下來交給phpmyadmin執行。
如果順利執行這段SQL指令的話,那麼就請你打開你常用的文字編輯器,輸入以下內容:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ redirect.php?q=$1 [L,QSA]
原始內容

(......本文待續......)

2008年9月19日 星期五

[野人獻曝][保證廢文] 淺論phpBB3與網站的整合!

咳咳,好久沒寫新文章了!
這次要來談一下phpBB3和既有網站系統的整合。
(原因:最近正在公司做的東西)

如果你的網站有自己的會員系統,
但卻想使用phpBB3作為自己的討論區的話,
或許可以參考本文,
但不保證你可以從本文得到什麼有用的知識!

==正文開始==

基本上,如果你上GooglephpBB3整合兩個關鍵字,
你可能會看到對岸的作法是直接用自己的會員系統去驗證,
如果有這個使用者存在的話,再直接幫使用者在phpbb3註冊幾個cookie。

不過我覺得這方法其實有點不大好,
所以我改用另一種方法,找前人已經包好的API去弄!

如果各位有心的話,應該可以找到這份API檔案。

當你找到這份檔案並且解壓縮以後,
你應該會看到以下兩個檔案:

  • phpbb3.inc.php

  • phpbb3_code.inc.php

只要你的主機裡有pear,也設定好phpbb3.inc.php裡的$phpbb_config和$phpbb_root_path變數後,
引入phpbb3.inc.php,並new出一個phpBB3_API,
就可以使用phpBB3的一些主要功能了(如:登入、登出、註冊)!

如果這樣還嫌不夠的話,
你當然還可以針對程式去作hack,
只不過那很累就是了XD!
除非你的需求難以滿足,
否則不建議這麼作。

2008年6月3日 星期二

[野人獻曝]檢查網站是否可連線的工具

由於最近很閒,
又剛好受到downforeveryoneorjustme.com這個網站的啟發,
所以寫了這東西來玩玩。

網址如下:
http://lab.faryne.tw/sitedown/

另外我也放了一份原始碼在Google Code上:
http://code.google.com/p/checksite

如果有任何使用問題,請在本文發表!

2008年5月14日 星期三

[野人獻曝]Apache上的Mod_rewrite的實作說明(中-1)

在前篇文章,我拿了Cakephp的rewrite規則來作一些基本的說明,
因此在接下來幾篇文章中,會針對幾個情境來試著實作,
請各位看看吧,如果有錯的地方也請多多指教!

案例一:

某案主:我的網站是用PHP寫成的,因此我的網站都會有像這樣的網址:
http://xxx.com/index.php

可是我不想讓別人知道這個網站是用php的,
所以我想要把.php改成.do(通常是用java之類的網頁),
(像是http://xxx.com/index.do)
當然啦,如果你能把.php除掉的話也可以啦!
(像是http://xxx.com/index)


針對某案主的要求,
我們可以先擬出以下基本的rewrite規則:

1<IfModule mod_rewrite.c>
2 RewriteEngine On
3
4 RewriteRule ([a-zA-Z0-9_]*).do $1.php [L]
5</IfModule>
(以上內容要儲存在.htaccess檔案中)

這樣當訪客輸入http://xxx.com/index.do時,
Apache會導向index.php。

這裡解釋一下第四行的內容,
該行內容是指:

當看到符合使用英文大小寫字母、數字和底線的.do時,即指定給該檔名的.php檔處理


這是最基本的狀況,
萬一某業主手賤替某個檔取了ad@google.php時又該怎麼辦?
你可以在這行([a-zA-Z0-9_]*)的粗體字後加上一個@,
如果有新狀況的話,就依此類推地給它加下去!
但是請注意,某些字碼如&、<、>等,
因為是需要進行HTML脫逸或是正規式的表示字元,
在使用上可能會有問題,使用前請務必小心,
當然啦,替檔案命名時絕對不要用這些字元會是最好的方法。

2008年5月13日 星期二

[耍笨]mktime的參數順序

話說今天正在寫一個月曆,
由於我壓根沒寫過這東西(注1),
所以在我稍微Google一下前輩們的思考邏輯後,
就開始寫Code了!

基本上整隻程式使用mktime和date函數來處理,
但笨點救出在這裡了。

大概花了一些時間寫完code後,
測試時竟然老是跑出錯誤的結果,
整隻程式從頭到尾看過一遍後,
還是找不到問題在哪!
後來才不小心地發現我的mktime函數內的參數給錯了Orz......

mktime的參數依順序分別是(時,分,秒,月,日,年),
請大家在使用mktime時要多加小心!

按:
雖然mktime的參數順序是時,分,秒,月,日,年
可是我老是會寫成年,月,日,時,分,秒
而且一直改不過來!
大概未來得讓自己習慣才行。

注1:
雖然說月曆這東西很簡單,
但是我一直覺得這東西很麻煩,
所以要用到月曆時,都是直接拿別人寫好的來套用。
自然就變成今天才寫生平中的第一次月曆!

2008年4月24日 星期四

[野人獻曝]Apache上的Mod_rewrite的實作說明(上)

Rewrite

最近不小心沉迷在研究Apache的mod_rewrite,
剛好也有點心得,
所以寫篇簡單心得放在這裡吧。

其實一切都是因為我從Cakephp裡的.htaccess得到一些靈感開始的,
所以我就以Cakephp的rewrite方法來作點說明吧!

首先看到Cakephp根目錄下的.htaccess檔吧:

&lt;IfModule mod_rewrite.c&gt;
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
&lt;/IfModule&gt;


第一行和最後一行基本上算是必備,
所以不用問太多加下去就對了XD

第二行開始,代表著你要啟用RewriteEngine的功能,
這一行必加,因為不加的話,你也不會知道為啥你的rewrite無效~

第三、四行則代表要把所有的Request導向給app/webroot,
換言之,Cakephp根目錄下的index.php基本上是擺好玩的!

既然前面提到已經被導向至app/webroot了,
那麼就繼續看app/webroot/.htaccess的內容吧:

&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
&lt;/IfModule&gt;


第一行、第二行和最後一行內容跟前段相同,所以就不多說了,
比較有意思的是第三、四、五行。
其意義如下:

  • RewriteCond %{REQUEST_FILENAME} !-d
    意義:任何附掛的字串都不會被視為一個目錄
    比如你輸入http://localhost/cakephp/a/s/d,(cakephp是你放cakephp檔案的目錄)
    那麼rewrite將會把a/s/d當成一般字串,而不會繼續去尋找cakephp下是不是有目錄a、目錄s。


  • RewriteCond %{REQUEST_FILENAME} !-f
    意義:任何附掛的字串都不會被視為一個檔案
    比如你輸入http://localhost/cakephp/a/s/d.css,(cakephp是你放cakephp檔案的目錄)
    那麼rewrite將會把a/s/d當成一般字串,而不會繼續去尋找cakephp下是不是有目錄a、目錄s、或是檔案d.css。

  • RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
    以上所提到的附掛字串都被當成一個參數,其名稱為url,
    指派給這個目錄下的index.php(就是app/webroot/index.php啦)處理。
    注意後面的[QSA,L],
    QSA(Querystring appedned)代表著要附掛Querystring給index.php,
    至於L(Last)代表最後一條rewrite規則。

2008年4月16日 星期三

2008年4月9日 星期三

[野人獻曝][小工具]Google Blogsearch的搜尋結果Widget

其實這東西從去年就開始寫了,
不過因為我的懶病發作,
所以只寫了幾行就放在硬碟裡生灰塵。

昨天一時心血來潮,
檢查我的垃圾程式堆時總算發現這個玩意,
因此花了一段時間把她弄出一個雛型出來。

效果在本部落格右手側即可看到。

嗯......其他的就先不說了!
要試用的請到:http://lab.faryne.tw/blogsearch/領取程式碼,
然後放在你要放的地方即可。

對了,如果有人願意把我弄一下版面的話,
我會很高興滴~

Technorati 标签: ,

2008年3月14日 星期五

[自以為是]網頁截圖工具:html2image

Convert HTML To Image on Linux : JPG, JPEG, BMP, PNG with html2image for Linux

說實在話啦,當你看到標題以後,
你一定會納悶:「不是有一卡車網頁截圖軟體嗎?介紹這個作啥?」
你想得也沒錯啦(默)

不過我會介紹這玩意,畢竟還是因為兩個原因:
  • 她是在*nix平台上運作的
  • 她可以拿來作機器截圖


撇開瀏覽器外掛的網頁截圖程式不談,十之八九的網頁截圖程式,
都只能在windows下運作,
這對於只擁有linux主機而又有大量網頁截圖需求的人,
實在是件很麻煩的事。
(當然啦,如果不在意網頁截圖品質的話,其實也有一堆網站提供這種服務。)
所以這套html2image的出現就真的是只能用「讚」一個字了。
而且啊,
她裡面還有一個nweb程式,可以讓你的伺服器成為小型的網頁截圖主機,
所以即使你在遠端也是可以用的啦!

使用方法:網站有寫,所以就不多提了!
不過很機車的是,我去年年尾下載的時候還沒有那麼詳盡的安裝說明,
所以害我摸索了很久才得以搞定(我是裝在Ubuntu7.10上)。
現在就補了各版本linux的安裝說明,這......



Technorati Tags: , ,

[耍笨]「&」這個符號的重要性!

&這個符號是個很有意義的連接符號,
因為在html中要利用get取資料時一定會用到「&」作為連接查詢字串的關鍵符號。
因此,標準的html是要將「&」轉換成「&amp;」的格式才可以(也包括「&gt;」、「&lt;」等符號)。

在linux下,在任何要執行的命令下加上「&」這個符號就代表你要讓這個命令在「背景」執行,
但是總會偶爾碰到命令中會「&」這個符號的時候,
所以就必須要在命令的前後端加上引號(單、雙)皆可。
(附帶一提:「&gt;」在linux下代表的是輸出的意思,所以如果命令中有這個符號的話,也一定要加引號使其變成單純的命令!)

Technorati Tags: , ,