2010年9月14日 星期二

為了防止form重複提交。
可以在form提交成功以後用header來重定向一下,
這樣用戶不管怎樣重新整理頁面也不會造成重複提交form了,
用js或html meta的方式一般情況下會有緩存,
可能會造成form重複提交,用header就不會哩。




$login = $_REQUEST['login'];
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
$op = $_REQUEST['op'];

大家注意,关键在这儿,header的时候一定要在内容输出之前操作,否则会报错的!

if ($login) {
if ($username == 'test' && $password == 'test') {
header("Location: login.php?op=succeed");
} else {
header("Location: login.php?op=failed");
}
}

switch ($op) {
case 'succeed':
echo 'Logged succeed!';
break;
case 'failed':
echo 'Logged failed!';
break;
}
?>

username:

password:








參考文獻: http://q.sohu.com/forum/5/topic/3479759

5 則留言:

  1. 你還是用 session 做 flag 比較直接,在還沒有重導向之前多按幾次 F5 ,這個防禦就失效了!

    回覆刪除
  2. 你是說!!token嗎?~我最近也在查這個

    回覆刪除
  3. 是 flag(旗標)!
    尤其是在做 Insert 的時候最怕碰要重複送出!
    用一個 flag 的變數去記錄記錄是不是已經執行過了!

    當然 token 也是有一樣的效果!

    回覆刪除
  4. 在 daybreak 裡的元件有幾個是獨立運作的
    你可以個別拿來使用,有興趣你也可以自己改寫

    Acl.php
    Cache.php
    Db.php
    Debug.php
    Filter.php
    I18N.php
    Registry.php

    回覆刪除
  5. 嗯嗯~這幾天想把公司電腦也環境架起來!!
    ~就想開始練習寫會員的部份看看

    回覆刪除