Php 防止重复提交表格
我试图阻止重复表单提交,但我总是得到错误Php 防止重复提交表格,php,forms,submit,form-submit,duplicate-removal,Php,Forms,Submit,Form Submit,Duplicate Removal,我试图阻止重复表单提交,但我总是得到错误无效密钥(表单通过验证)。有什么问题吗 PHP: HTML: 在本文中,作者建议这样做: if(isset($_SESSION["FORM_SECRET"])) { if(strcasecmp($form_secret, $_SESSION["FORM_SECRET"]) === 0) { if(isset($_SESSION['FORM_SECRET'])) { if(strcasecmp($form_secret, $_SESS
无效密钥应提交表单后的代码>(表单通过验证)。有什么问题吗
PHP:
HTML:
在本文中,作者建议这样做:
if(isset($_SESSION["FORM_SECRET"])) {
if(strcasecmp($form_secret, $_SESSION["FORM_SECRET"]) === 0) {
if(isset($_SESSION['FORM_SECRET'])) {
if(strcasecmp($form_secret, $_SESSION['FORM_SECRET']) == 0) {
但在您的示例中,您正在这样做:
if(isset($_SESSION["FORM_SECRET"])) {
if(strcasecmp($form_secret, $_SESSION["FORM_SECRET"]) === 0) {
if(isset($_SESSION['FORM_SECRET'])) {
if(strcasecmp($form_secret, $_SESSION['FORM_SECRET']) == 0) {
请注意,在原始版本中,使用了==
比较运算符,但在您的版本中使用的是=
此外,在您的表单中,form\u secret
的值是否在您执行以下操作时实际设置:
<input type="hidden" name="form_secret" id="form_secret" value="<?php echo $_SESSION['FORM_SECRET'];?>" />
但是表单会在下面处理。每次只需重置$\u SESSION['FORM\u SECRET']
的值。相反,这段代码需要与HTML表单页面一起使用。也许是这样的:
<?php
session_start();
$secret = md5(uniqid(rand(), true));
$_SESSION['FORM_SECRET'] = $secret;
?>
<form enctype="multipart/form-data" method="POST">
<input type="hidden" name="form_secret" id="form_secret" value="<?php echo $_SESSION['FORM_SECRET'];?>" />
.
.
.
<input type="submit" name="send" value="Send" />
您是否在存在html表单的页面中启动了会话?请尝试如下调试:echo$form\u secret。“=”$\u会话['form\u secret'];我已经试过了,但JakeGould解决了我的问题。===
也有同样的问题。请参阅我的编辑。我认为您需要更好地理解$\u SESSION
值的总体概念。
<?php
session_start();
$secret = md5(uniqid(rand(), true));
$_SESSION['FORM_SECRET'] = $secret;
?>
<form enctype="multipart/form-data" method="POST">
<input type="hidden" name="form_secret" id="form_secret" value="<?php echo $_SESSION['FORM_SECRET'];?>" />
.
.
.
<input type="submit" name="send" value="Send" />
<?php
.
.
.
session_start();
// Send Message
if (isset($_POST['send']))
{