URL rewrite 的 + 與 %20 的問題

現在流行 Rewrite 讓網址美化,所以 Web server (Nginx、Apache...) 都會使用 rewrite module 來達成。

不過 Rewrite 常常會遇到各種符號的問題,例如下述:

上述在 Apache 的 mod_rewrite 會遇到的問題大概都解決了,但是現在遇到 Nginx + fastcgi 的模式,開始又有一些其它問題出現,如下範例:

  1. 標題: dvd player
  2. 網址自動轉換成: dvd+player
  3. 再到 PHP 端就用 dvd+player 去找,就找不到此篇文章
  4. 這問題要怎麼解決呢?

閱讀全文〈URL rewrite 的 + 與 %20 的問題〉

PHP 截出 圓形(橢圓形)的圖片

PHP 要截圖可以參考此篇:PHP 要截圖片的某個區塊(截圖)

上述截圖的圖片是方形的,想要截出圓形的圖片,要怎麼做呢?

註:此篇文章的需要透明背景,所以還是以 png 為主。

閱讀全文〈PHP 截出 圓形(橢圓形)的圖片〉

對 Mac OSX 使用 smoothing grayscale CSS 設定

看到網頁的字型特別細緻,就很想看看是什麼字型預設可以做成這樣子。

查到的只是個 -moz-osx-font-smoothing: grayscale; 的設定,看起來還沒列入標準,而且似乎只有 MacOSX 可以看到。

閱讀全文〈對 Mac OSX 使用 smoothing grayscale CSS 設定〉

PHP 使用 SHA256、SHA512 等 演算法的寫法

PHP 有 md5()sha1() ... 等等 function,不過現在建議使用 SHA224 以上(註),在 PHP 要怎麼寫呢?

註:下述摘錄自此篇:Mobilefish.com - MD5, SHA1, SHA224, SHA256, SHA384, SHA512 and RIPEMD160 hash generator

  • MD5 is considered cryptographically broken and is unsuitable for further use.
  • The SHA1 algorithm might not be secure enough for ongoing use. It is recommended not to use SHA1.
  • SHA224: SHA224 produces a 224-bit (28-byte) hash value, typically rendered as a hexadecimal number, 56 digits long.
  • SHA256: SHA256 produces a 256-bit (32-byte) hash value, typically rendered as a hexadecimal number, 64 digits long.
  • SHA384: SHA384 produces a 384-bit (48-byte) hash value, typically rendered as a hexadecimal number, 96 digits long.
  • SHA512: SHA512 produces a 512-bit (64-byte) hash value, typically rendered as a hexadecimal number, 128 digits long.
  • RIPEMD160: RIPEMD160 produces a 160-bit (20-byte) hash value, typically rendered as a hexadecimal number, 40 digits long.

閱讀全文〈PHP 使用 SHA256、SHA512 等 演算法的寫法〉

PHPMailer 使用 Gmail 寄信登入失敗的設定修復

想要使用 PHPMailer 來透過 GMail 的帳號寄信,近期都無法正常登入成功(「密碼不正確」錯誤),以至於信件無法正常發送,主要原因在於 Google 設定部分需要做點修改。

閱讀全文〈PHPMailer 使用 Gmail 寄信登入失敗的設定修復〉

PHP 送 301 / 302 轉址的 Header

以往 301 我都是設在 Apache 裡面,如下:

RewriteRule ^news$  http://example.com/news/ [R=301,NE,L]

想要在 PHP 送 301 / 302 Redirect 的 Header 要如何寫?

HTTP 定義 301 / 302 的 Header 意義:

  • 301: 永久轉址 (Permanently Moved)
  • 302: 臨時轉址 (Temporarily Moved)

閱讀全文〈PHP 送 301 / 302 轉址的 Header〉

PHP 取得 Git 的 branch name

想要取得專案中目前在 Master 或 Branch,可以判斷要去抓不同的 config,可以使用此 function。

<?php
function get_git_branch_name()
{
    $git_head = './.git/HEAD';
    return (file_exists($git_head)) ? implode('/', array_slice(explode('/', file_get_contents($git_head)), 2)) : '';
}
?>

註:$git_head 的路徑請自行修改設定。

使用方式:

<?php print_r(get_git_branch_name()); // master ?>

感謝 Fwolf 的建議,用 system 的指令執行:git branch | grep '*' | awk '{print $2}' ,可以解決 submodule 抓不到 branch 的問題