星期一, 5月 04, 2009

MySQL 查詢時無法不分大小寫?

最近發現 MySQL 資料庫在查詢時,條件式無法不區分大小寫,即使加上 UPPER(fieldname) 與 PHP 的 strtoupper 也一樣,結果發現是 collation 的問題。原來 binary 的欄位是一定會區分大小寫的,解決之道就是把那個欄位的 collation 改成 utf8_general_ci,而且也不能用 varbinary 之類的型態。另外在處理 utf8_general_ci 的欄位時,記得加上 mysql_query('SET NAMES "utf8"'); 之類的命令,才不會出現亂碼。

星期一, 12月 08, 2008

轉址轉不過去?

MagpieRSS 這套處理 RSS 的 PHP 程式非常地好用,不過今天發現它無法處理 MobileMe 相簿的 RSS,後來發現是因為 MobileMe 的 RSS 會轉址(Redirect)到另一個地方。其實 MagpieRSS 也會處理轉址的問題,所以另人不解問題是出在哪裡。後來到 Snoopy.class.inc 裡面修改程式,把網頁的 header 列出來,才發現 MobileMe 在轉址時,給的轉址 header 竟然是 location: 而不是 Location:,也就是第一個字母沒大寫,而偏偏 MagpieRSS 在用 Regular Expression 處理時只尋找大寫開頭的 Location,自然是找不到轉址的目的地了。只要修改 MagpieRSS 的 Regular Expression,讓它可以認得小寫開頭的 location,就解決這個問題了。總之,這個問題竟然是因為大小寫的不同而產生的,實在是很鳥。

星期二, 12月 02, 2008

安裝 WordPress MU

最近在虛擬主機上安裝 WordPress,但是卻發現如果要建立多個不同網誌,就要重覆安裝整套 WordPress,可說是很不經濟。

另一個選擇是使用 WordPress MU,在一套系統中建立多個網誌。不過這套系統傳到虛擬主機上以後 ,卻不斷出現網站未定義,或 internal server error  的錯誤訊息。奇怪的是把 WordPress MU 的目錄設成 751 終於可以安裝了,原來設成 777 反而不行。另外也根本不必先改 wp-config-sample.php,也不必把檔名改成 wp-config.php,改了反而會有問題,要做設定只要在成功進入 WordPress MU 後在網頁上進行即可。

做好以上更改後,終於可以進入設定頁面。不過安裝完成後,又會出現 500 internal server error。其實這是因為它在 .htaccess 中加入了 php_flag register_globals 0php_flag display_errors 0 的兩行設定,但是有些伺服器無法支援這種寫法。既然我用的虛擬主機已經是這樣設定,就可以拿掉這兩行。拿掉後,WordPress 就能正常運作了。

星期一, 12月 24, 2007

PHP 的 session 記不住?

最近在一個網站中,放進了用到 session 的 PHP 檔,卻發現 session 完全發揮不了作用,也就是記不住。奇怪的是放在根目錄與第二層目錄中都可以,放到第三層就不行。經過反覆試驗,結果發現可以更改 session 儲存的路徑來解決。我加了這一行:

session_save_path("../../../phpsessions");

這一行要放在 session_start() 的前面。

星期二, 5月 29, 2007

引發眾怒的啤酒廣告

原來一則在電台上播放的廣告也可以惹惱這麼多人。最近美樂啤酒的電台廣告就是這麼了不起,它的歌詞實在太愚蠢,再加上最後一句不耐煩的「知啦!」,竟然讓一堆網友上網訐譙。它的歌詞前幾句大概是「my麻吉my麻吉,美樂鏘鏘(ㄎㄧㄤ ㄎㄧㄤ)my麻吉,鏘美樂鏘美樂,麻吉my麻吉」,然後就開始一段充斥著 yo man~ 的 rap,最後再回到「美樂」、「鏘」、與「麻吉」的排列組合。目前網友的評語有「每次聽一次就幹一次」、「聽到頭暈又想吐,不由自主的一直罵髒話」、「聽覺強姦消費者和聽眾 」、「拜託不要在『鏘』了」等等,甚至有人想抵制這個產品。

這大概是個很好的反面行銷教材,有時候,把自以為很「酷」的外來用詞放在一起,不一定酷得起來。不過我對唱歌的人沒意見,歌手自己應該也很無奈吧。

星期一, 5月 14, 2007

限制網站使用者直接打開圖檔

如果用 PHP 對一個網站做密碼保護,使用者當然只能在輸入密碼後才能看到網頁內容,可是如果使用者在登入後記下圖片的網址,之後只要輸入這個網址,就能在不用密碼的情況下看到圖片。經試驗,以下的方法算是可以解決這個問題:

1. 打開 /etc/httpd/conf/httpd.conf
2. 如果原來是這樣:

Order allow, deny
Allow from all


就改成:

SetEnvIfNoCase Referer "^http://xxx\.xxx\.xxx\.xx" local_ref=1
<FilesMatch "\.(gif|jpg|png|tif|wmv|wma|swf)">
Order allow,deny
Allow from env=local_ref
Allow from xxx.xxx.xxx.xxx
Allow from 127.0.0.1
</FilesMatch>


這樣圖片只能在網頁裡顯示,直接輸入網址無法看到。

星期日, 5月 06, 2007

Realbasic 資料庫 Query 的編碼問題

又是編碼的問題。之前用 Realbasic 做一個 SQL query,一直都不成功,會傳回 nil,除非在原本是 UTF16 的字串最後加上 Chr(&h0d)+Chr(&h0a) 再轉換為 UTF8 才行,不加那兩個字元就不行。後來發現竟然只要在 query 時,把要加入 query 的字串 DefineEncoding 為 UTF8 即可,所以不定義編碼就不能 query,真是夠爛的了。至於為什麼加上那兩個換行字元就可以?大概是他們的組合給了某種編碼訊息?我也不太確定。

下次不能 query 時,可以試試把編碼定義清楚。