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

