星期五, 3月 30, 2007

C/PHP 的單一出口

PHP 裡面看到類似這樣的程式碼:
if (isset($_GET['var1'])) {
$var1 = $_GET['var1'];
if (isset($_GET['var2'])) {
$var2 = $_GET['var2'];
if (isset($_GET['var3'])) {
$var3 = $_GET['var3'];
// do something...
}
}
}

如果條件式再多一點的話就會更爆炸,我看到的 code 是七層... -_-

其實早在 C 語言時這個問題就有一個堪用的解法,拿到 PHP 上用也可以:
do {
if (isset($_GET['var1']))
break;
$var1 = $_GET['var1'];

// 以下類推
} while (0);

星期三, 3月 28, 2007

IE 裡 XMLHttpRequest 的 cache

在 IE 裡使用 XMLHttpRequest 時會被 cache (沒有遵守 Cache-Control 的 no-cache 參數),這個問題不會太大 (因為很好解,解法也不會破壞其他遵守規定的 Browser),解法是在 Cache-Control 外多送出幾組 header:
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Expires: Mon, 1 Mon 1990 00:00:00 GMT
Last-Modified: 現在的時間

這樣在 IE 上就會正常了。