表单令牌阻止数据重复提交
生活随笔
收集整理的這篇文章主要介紹了
表单令牌阻止数据重复提交
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在session中存放一個特殊標志
?
在服務器端,生成一個唯一的標識符,將它存入session,同時將它寫入表單的隱藏字段中,然后將表單頁面發給瀏覽器,用戶錄入信息后點擊提交,在服務器端,獲取表單中隱藏字段的值,與session中的唯一標識符比較,相等說明是首次提交,就處理本次請求,然后將session中的唯一標識符移除;不相等說明是重復提交,就不再處理。
?
這使你的web應用有了更高級的XSRF保護。
?
請見如下代碼:
1 <?php 2 session_start(); 3 //根據當前SESSION生成隨機數 4 $code = sha1(mt_rand(0,1000000)); 5 $_SESSION['code'] = $code; 6 ?> 7 //在頁面表單上將隨機數作為隱藏值進行傳遞,代碼如下: 8 <input type="hidden" name="originator" value="<?=$code?>"> 9 10 //在接收頁面的PHP代碼如下: 11 12 <?php 13 session_start(); 14 if(isset($_POST['originator'])) { 15 if($_POST['originator'] == $_SESSION['code']){ 16 // 處理該表單的語句,省略 17 }else{ 18 echo ‘請不要刷新本頁面或重復提交表單!’; 19 } 20 } 21 ?>?
轉載于:https://www.cnblogs.com/walblog/articles/7985985.html
總結
以上是生活随笔為你收集整理的表单令牌阻止数据重复提交的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络流 24 题汇总(LOJ 上只有 2
- 下一篇: XSD详解二 - 简易元素、属性、内容限