星期二, 10月 30, 2007

FreeBSD 的 mod_extract_forwarded2

一般的 reverse proxy 都不是 reverse NAT,所以 Apache 端必須要做一些處理才能拿到正確的使用者 IP Address,一般都是以 欄位做為判斷的標準,不過這樣的缺點是 PHP 必需要自己判斷。

就是直接把可信任來源的 替代成使用者端的 IP Address,如此一來 的程式不需要改變程式碼,與以前一樣只需要用 $_SERVER["REMOTE_ADDR"] 就可以取得使用者的 IP Address。

下的 安裝完後其實是有問題的,安裝完後的設定是:
LoadModule extract_forwarded2_module libexec/apache22/mod_extract_forwarded2.so

但應該改成:
LoadModule extract_forwarded_module libexec/apache22/mod_extract_forwarded2.so

然後對 reverse proxy 的 IP Address 設定:
AddAcceptForwarder 10.0.0.100

你可以寫個小程式,從不同 IP Address 帶 X-Forwarded-For 參數,將 $_SERVER["REMOTE_ADDR"] 印出測試看看。

Powered by ScribeFire.

星期日, 10月 14, 2007

AMR codec (3gp 在 ffmpeg 裡的支援問題)

剛剛發現,現在想要讓 支援 3gp 已經不需要自己 patch 了,而可以安裝 後直接在 compile 時使用。

星期一, 10月 01, 2007

PHP 內的 extract()

這陣子在 trace 程式碼的時候發現公司裡面的 Programmer 對於 extract() 的用法似乎不是很熟悉。

以往我們會用 foreach$_POST 的變數複製到全域變數上:
foreach ($_POST as $k => $v)
${"pvar_$k"} = $v;

但實際上 有現成的函數可以用:
extract($_POST, EXTR_PREFIX_ALL, "pvar");
extract($_GET, EXTR_PREFIX_ALL, "gvar");
extract($_COOKIE, EXTR_PREFIX_ALL, "cvar");

這樣就可以用 $pvar_variable 取得 $_POST["variable"] 的值。