Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止重复提交表格_Php_Forms_Submit_Form Submit_Duplicate Removal - Fatal编程技术网

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']))
  {