php 如何避免程式重複執行

來源:互聯網
上載者:User
關鍵字 php
如往資料庫 中插入一條資料成功後跳轉到下一個頁面後 然後返回 又插入了一條 怎麼避免

回複內容:

如往資料庫 中插入一條資料成功後跳轉到下一個頁面後 然後返回 又插入了一條 怎麼避免

//表單頁面//提交頁面session_start();if (!isset($_SESSION['token']) || $_POST['token'] != $_SESSION['token']) {    die('重複提交');}unset($_SESSION['token']);//code..

那就在你的POST表單裡加個一次性“憑證”唄,憑證由產生表單頁面的邏輯簽發,存入緩衝;然後在接受POST的邏輯裡檢查憑證的有效性,有效則執行儲存寫入資料庫,並清理掉這個憑證;
1.第一次請求,憑證未逾時且有效,通過。
2.返回請求地址,實際是POST了一模一樣的資料過去,但憑證已經被第一次清理,會檢測到憑證失效。
3.多次被類比(惡意)POST請求,憑證為前後關聯,且具有時效性和一次性特點,也不會執行儲存資料。

試試看,苦海無邊,望君保重 - -!

添加一個時間戳記憑證,讀取後比對目前時間,多少秒內不反覆入庫。

設定一個global flag(true /false) ,然後用if 來判定這個flag 再插入。

或者提交後禁止返回

表單每次產生一個唯一且變化的token,同時產生對應的session,然後提交的時候,校正這個token。當插入資料庫成功後,就清空這個session。即使重複點擊,token也失效了!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.