Trick


6
Aug 08

Page expried problem

Hôm nay tôi dính phải 1 bug khá củ chuối: sau khi submit form, back button không hoạt động trên IE6 browser. Khi click vào nút back này sẽ xuất hiện 1 thông báo như sau:

Warning: page has expired The page you requested was created using information you submitted in a form. This page is no longer available. As a security precaution, Internet Explorer does not automatically resubmit your information for you.

To resubmit your information and view this Web page, click the Refresh button.

Sau một hồi tham khảo các cách giải quyết trên mạng thì sinh ra được cái hàm này:

1
2
3
4
5
6
7
8
9
10
11
12
13
/**
* Fix back button on IE6 (stupid) browser
* @author khanhdn
*/
function fixBackButtonOnIE() {
//drupal_set_header("Expires: Sat, 27 Oct 1984 08:52:00 GMT GMT");    // Always expired (1)
//drupal_set_header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");    // always modified (2)
drupal_set_header("Cache-Control: no-store, no-cache, must-revalidate");    // HTTP/1.1 (3)
drupal_set_header("Cache-Control: public");    (4)
drupal_set_header("Pragma: no-cache");    // HTTP/1.0   (5)
 
ini_set('session.cache_limiter', 'private');    (6)
}

Tạm comment cái (1) (2), vẫn chạy okie. Có lẽ chỉ cần giữ lại (3) (4) (5) là đủ???

Dù sao cũng giải quyết được cái bug này >”<

[Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

28
May 08

Form validation

Ngày trước tôi chỉ cần check cái input form (hữu hạn) để nó khác rỗng.

Ngày nay tôi phải:

  1. Check cả kiểu dữ liệu
  2. Check cả format (số điện thoại, số thẻ tín dụng…)
  3. Check các field mà không biết nó có thể tạo ra được bao nhiêu.
  4. Check các field & các field này ràng buộc với nhau. Từ trên xuống, có. Từ trái qua phải, có. Check chéo cũng có…
  5. … và nhiều cái phải check nữa sau này, qua quá trình làm việc sẽ dần dần đúc kết được thôi mà :)

Basic concept của 1 web developer khi validate form đó là…phải luôn focus dữ liệu. Thông báo được lỗi là tốt, nhưng chỉ ra lỗi vì đâu, lỗi ở chỗ nào, càng cụ thể thì càng tốt…cho người dùng (chứ dev thì mệt bỏ cha :D )

[Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

26
Apr 08

Working with checkbox

Tôi thường hay dùng checkbox trong trường hợp list các record ra & cho phép chọn record tương ứng để xóa. Ngày trước, khi muốn lấy giá trị của các checkbox được chọn, tôi làm như sau:

1
2
3
4
5
6
7
8
9
if(is_array($_POST['checkbox_name'])) {
    $list_selected_id = '';
    foreach($_POST['checkbox_name'] as $key =&gt; $val) {
        $list_selected_id .= ','.$val;
    }
 
    $list_selected_id = substr($list_selected_id,1);
    //output will be: 1,2,3,...,n
}

Còn ngày nay, chỉ với 1 dòng đơn giản như sau:

1
$list_selected_id = implode(',', $_POST['checkbox_name']);

Hix, quá ngắn gọn, quá sáng sủa :(

Và thêm 1 điều nữa, tôi thấy Drupal (và các framework khác) thường dùng cách implode mảng để build các câu SQL. Quả thực khi áp dụng đúng lúc đúng chỗ thì phát huy tác dụng khỏi phải bàn cãi :D

[Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

10
Apr 08

Shortcut keys

On FF, using:

Ctrl + Shift + T for restore tab just closed.

Ctrl + Tab for jump between opening tab

[Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]

5
Apr 08

Show Desktop.scf

Khi bị mất biểu tượng Show Desktop, dùng đoạn mã sau:

[Shell]

Command=2

IconFile=explorer.exe,3

[Taskbar]

Command=ToggleDesktop

Save as Show Desktop.scf & move it into C:\Documents and Settings\khanhdn\Application Data\Microsoft\Internet Explorer\Quick Launch
Phần in nghiêng tùy thuộc vào từng máy, thay đường dẫn thích hợp là okie.

p/s: cách hay làm là…sang 1 máy khác còn biểu tượng Show Desktop rồi copy về máy mình, paste vào theo đường dẫn như trên :D

[Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]