index.php
當前表單頁面is_submit設(shè)為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>密 nbsp; 碼: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
若是提交表單了,設(shè)當前'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. 設(shè)置token值
代碼如下
$token = mt_rand(0,1000000);
$_SESSION['token'] = $token;
總結(jié)
以上所述是小編給大家介紹的PHP+Session防止表單重復提交的解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
您可能感興趣的文章:- PHP實現(xiàn)防止表單重復提交功能【基于token驗證】
- php 防止表單重復提交兩種實現(xiàn)方法
- php表單加入Token防止重復提交的方法分析
- php解決和避免form表單重復提交的幾種方法
- PHP使用token防止表單重復提交的方法
- php防止表單重復提交實例講解