php 刷新提交表單問題

https://blog.csdn.net/u012466451/article/details/68952280

在表單裏生成一個token(隨機字符串),然後用個input裝起來,設置hidden。第一次post處理完數據後把token存入session,接下來每次post判斷一下token跟session中的一不一樣,一樣則說明數據處理過了。

<?php

session_start();

 

//讀取服務器端的session_id,如果沒有的話賦值爲-1

$session_id = empty($_SESSION['session_id']) ? -1 : $_SESSION['session_id'];

 

//讀取客戶端的post_id,如果沒有的話賦值爲-2

$post_id = empty($_POST['post_id']) ? -2 : $_POST['post_id'];

 

//判斷兩個id是否相同,相同則說明已經處理過一次,不同則進行處理

if($session_id == $post_id){

 

echo "<h1>已經處理過了,不管了</h1>";

 

}else{

 

//如果頁面還沒有提交過表單,則顯示錶單,否則處理post過來的數據

if($post_id == -2){

?>

<html>

<body>

<form action="index.php" method="post">

<input type="text" hidden="hidden" name="post_id" id="" value="<?php echo rand(1, 999999); ?>" />

<input type="text" name="test" id="test" value="" />

<input type="submit" value=""/>

</form>

</body>

</html>

<?php

}else{

 

echo "<h1>正在處理</h1>";

 

//處理過後吧post_id存入session,方便下次比較

$_SESSION['session_id'] = $post_id;

 

}

 

}

?>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章