为什么刷新后按钮仍处于活动状态?

时间:2020-11-05 17:30:01

标签: php arrays session

我正在一个项目上,基本上我需要将输入表单的内容存储在数组中,但是我必须添加它,而不是替换它,这就是为什么我使用session_start()的原因。 问题在于,即使将输入表单留空,因此不提交任何输入,而只是刷新页面,每次都会添加最后一个元素。

例如,假设我是第一次将John添加到输入表单中,然后按了SUBMIT Button,这是第一次,结果将是正常的,简单地说是Array([0] => John),但是进行刷新(因此将输入字段留空)会将John的名字毫无理由地添加到数组中,这是输出示例:

Array (
  [0] => John
  [1] => John
  [2] => John
  [3] => John
  [4] => John
  [5] => John
  [6] => John 
)

在这种情况下,我刷新了6次页面。该按钮似乎保持活动状态,因此传递了if(isset($ _ POST ['invia_prenotazione']))控件。

<?php
  session_start();
  if (!isset($_SESSION['nomi']))
  {
    $_SESSION['nomi']=array();
  }

  if(isset($_POST['invia_prenotazione']))
  {
    $_SESSION['nomi'][]=$_POST['nome'];
    echo "<br>";
    print_r($_SESSION['nomi']);
  }
?>

 <!DOCTYPE html>
 <html>
   <head>
     <title>Es1</title>
     <style>
       input
       {
         position: relative;
         display: block;
       }
     </style>
   </head>
   <body>
     <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
       Nome Evento: <input type="text" name="nome"><br>
       <input type="submit" name="invia_prenotazione" value="SUBMIT"><br>
     </form>
   </body>
 </html>

1 个答案:

答案 0 :(得分:1)

执行提交后,无论何时刷新页面,都会再次执行相同的操作,这意味着您再次提交表单。

在这里看看:
Best way to avoid the submit due to a refresh of the page

通常,将表单页面重定向到同一页面不是一个好习惯,也不要在视图文件中包含逻辑。相反,您应该有一个登录php文件和一个查看文件。