PHP+Session防止表單重復提交的解決方法
index.php
當前表單頁面is_submit設為0
SESSION_START(); $_SESSION['is_submit'] = 0; <form id="reg" action="post.php" method="post"> <p>用戶名:<input type="text" class="input" name="username" id="user"></p> <p>密 碼:<input type="password" class="input" name="password" id="pass"></p> <p>E-mail:<input type="text" class="input" name="email" id="email"></p> <p><input type="submit" name="submit" class="btn" value="提交注冊"/></p> </form>
post.php
若是提交表單了,設當前'is_submit為1,若是刷新post.php,那么將執(zhí)行else代碼
SESSION_START();
if (isset($_POST['submit'])) {
if ($_SESSION['is_submit'] == '0') {
$_SESSION['is_submit'] = '1';
echo "代碼塊,要做的事,代碼...<a onclick='history.go(-1);' href='javascript:void(0)'>返回</a>";
} else {
echo "請不用重復提交<a href='index.php'>PHP+SESSION防止表單重復提交</a>";
}
}
php 解決表單重復提交實現(xiàn)方法介紹
[導讀] 重復提交是我們開發(fā)中會常碰到的一個問題,除了我們使用js來防止表單的重復提交,同時還可以使用php來防止重復提交哦。
例1 代碼如下
重復提交是我們開發(fā)中會常碰到的一個問題,除了我們使用js來防止表單的重復提交,同時還可以使用php來防止重復提交哦。
例1
代碼如下
<?php
/*
* php中如何防止表單的重復提交
*/
session_start();
if (empty($_SESSION['ip'])) {//第一次寫入操作,判斷是否記錄了IP地址,以此知道是否要寫入數(shù)據(jù)庫
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR']; //第一次寫入,為后面刷新或后退的判斷做個鋪墊
//...........//寫入數(shù)據(jù)庫操作
} else {//已經(jīng)有第一次寫入后的操作,也就不再寫入數(shù)據(jù)庫
echo '請不要再次刷新和后退'; //寫一些已經(jīng)寫入的提示或其它東西
}
?>
具體原理
session范圍變量token來防止。
1. 開啟session:
session_start();
2. 如果有表單提交
代碼如下 復制代碼
if (isset($token))
token以hidden的形式包含在form當中。
代碼如下 復制代碼
<input type="hidden" name="token" value="<?php echo $token; ?>" />
3. 如果是重復提交表單
代碼如下
if ($_SESSION["token"] != $token) {
// 不讓重復提交,在此處理
// header("location:".$_SERVER['PHP_SELF']);
} else {
// 正常的表單提交,在此處理
// echo "已提交";
}
4. 設置token值
代碼如下
$token = mt_rand(0,1000000); $_SESSION['token'] = $token;
總結(jié)
以上所述是小編給大家介紹的PHP+Session防止表單重復提交的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關文章
Laravel5.4框架使用socialite實現(xiàn)github登錄的方法
這篇文章主要介紹了Laravel5.4框架使用socialite實現(xiàn)github登錄的方法,結(jié)合實例形式分析了Laravel相關下載、安裝、配置及github登陸、注冊、設置等相關操作技巧,需要的朋友可以參考下2019-03-03
3個PHP多維數(shù)組轉(zhuǎn)為一維數(shù)組的方法實例
這篇文章主要介紹了3個PHP多維數(shù)組轉(zhuǎn)為一維數(shù)組的方法實例,分別使用foreach、for、while三種循環(huán)方法來實現(xiàn),需要的朋友可以參考下2014-03-03
NativePHP使用PHP創(chuàng)建桌面應用程序
這篇文章主要為大家介紹了NativePHP使用PHP創(chuàng)建桌面應用程序,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12
PHP的new static和new self的區(qū)別與使用
這篇文章主要介紹了PHP的new static和new self的區(qū)別與使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11

