這就是我想要做的:表單提交的唯一標記似乎不起作用
防止用戶使用唯一標記提交表單兩次。我想我在這裏有正確的代碼,但它仍然沒有工作。第一次提交表格時,輸出爲「不要發送兩次」。我究竟做錯了什麼?
<?php session_start(); ?>
<html>
<body>
<?php
$_SESSION['token'] = md5(session_id() . time());
?>
<?php
if (isset($_SESSION['token']))
{
if (isset($_POST['token']))
{
if ($_POST['token'] != $_SESSION['token'])
{
echo "Don't send twice!";
}
}
}
else {
echo "Thank you for submitting";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="hidden" name="token" value="<?php echo $_SESSION['token'] ?>" />
<input type="text" name="bar" />
<input type="submit" value="Save" />
</form>
您創建一個新的$ _SESSION [「令牌」]在每一頁上的負載,所以條件總是滿足(「()的時間」不斷變化的值)。 – rlanvin 2012-02-23 12:04:27
重定向到同一頁面的表單提交後,防止形式重新提交 – 2012-02-23 12:10:38
@雷米我改變了令牌...... $ _SESSION [「令牌」] = MD5(uniqid()); ...但我還是有同樣的問題,它說我第一次提交「不發送兩次」。你能展示一些代碼示例嗎? – user1009453 2012-02-23 12:25:24