Aron Rotteveel của Bao gồm một thẻ duy nhất trên mỗi POST đã làm việc cho tôi. Tuy nhiên, biểu mẫu của tôi vẫn gửi khi người dùng làm mới trang (F5). Tôi quản lý để giải quyết việc này bằng cách thêm một thiết lập lại:
// reset session token
$_SESSION['token'] = md5($_POST['token'] . time());
kịch bản cuối cùng của tôi đi như thế:
if (isset($_SESSION['token'])) {
if (isset($_POST['token'])) {
if ($_POST['token'] != $_SESSION['token']) {
echo '<h3>Oops! You already submitted this request.</h3>';
} else {
// process form
// reset session token
$_SESSION['token'] = md5($_POST['token'] . time());
}
} else {
echo 'post token not set';
$_SESSION['token'] = md5($somevariable . time());
}
}
oh! đừng quên thêm session_start();
trước <!DOCTYPE>
Tôi là người mới sử dụng PHP, vì vậy hãy sửa tôi nếu bạn tìm thấy sự bất thường.
Bạn có thể tắt sự kiện được kích hoạt khi nhấn enter không? –
Smack chúng mỗi khi họ làm. Cuối cùng, họ sẽ tìm hiểu :) – Gordon
Tôi sẽ khuyên bạn nên sử dụng các phím Biểu mẫu. Hãy xem xét điều đó tại đây: http: //net.tutsplus.com/tutorials/php/secure-your-forms-with-form-keys/ –