我發現了一些答案,如this good one(它使用兩個文件一個用於表單和其他處理),還有一些使用外部資源(如數據庫或簡單文件)的其他答案。防止多次提交相同的表格
我在找的是防止同一個表單的多重提交,尤其是當表單和php代碼在同一個文件中而且沒有使用外部文件時。
這是我曾嘗試:
<?php //fone.php
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
if(isset($_SESSION['token']))
$_SESSION['prv_token']=$_SESSION['token'];
$_SESSION['token']=md5(uniqid());
?>
<html>
<head><meta charset="utf-8"><title>TEST</title></head>
<body>
<?php
if($_SERVER['REQUEST_METHOD']=='POST' && $_POST['token']==$_SESSION['prv_token']){
echo "<p>Form Submited</p>";
}
?>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>">
<input type="hidden" name="token" value="<?php echo $_SESSION['token'];?>">
Name : <input type="text" name="name"><br>
Age : <input type="text" name="age"><br>
<input type="submit" name="submit">
</form>
</body>
</htmL>
該解決方案對我的作品,但代碼休息,如果我在其他文件中使用$_SESSION['token']
。
所以......你的問題是什麼? – Glubus
@Glubus防止同一表單的多個提交,在表單的情況下,並且php代碼在同一個文件中...並且不使用外部文件 – BBeta
就像你在你的問題中陳述的那樣,你已經實現了這一點。你是否要求替代你自己的解決方案?這真的不是那個地方。 – Glubus