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

Php 为什么刷新后按钮处于活动状态?,php,arrays,session,Php,Arrays,Session,我正在处理一个项目,基本上我需要将输入表单的内容存储在一个数组中,但我必须添加它,而不是替换它,这就是我使用session_start()的原因。 问题是,即使将输入表单留空,因此不提交任何输入,而只是刷新页面,每次都会添加最后一个元素 例如,假设我第一次将John添加到输入表单中并按下SUBMIT按钮,第一次结果将是正常的数组([0]=>John),但是,通过简单地刷新(并让输入字段为空),John的名字将毫无理由地添加到数组中,这是一个输出示例: Array ( [0] => Jo

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

例如,假设我第一次将John添加到输入表单中并按下SUBMIT按钮,第一次结果将是正常的数组(
[0]=>John
),但是,通过简单地刷新(并让输入字段为空),John的名字将毫无理由地添加到数组中,这是一个输出示例:

Array (
  [0] => John
  [1] => John
  [2] => John
  [3] => John
  [4] => John
  [5] => John
  [6] => John 
)
在本例中,我对页面进行了6次刷新。该按钮似乎保持激活状态,从而传递if(isset($_POST['invia\u prenotazione'])控件


Es1
输入
{
位置:相对位置;
显示:块;
}

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

看看这里:


通常,将表单页面重定向到同一页面不是一种好的做法,视图文件中也不包含逻辑。相反,您应该有一个登录php文件和一个视图文件。

提交表单后,只需重定向页面即可。这就是为什么将HTML和PHP分离到各自的文件中是一个好主意,因为在PHP脚本结束后,您将被迫重定向,这将解决您的问题。@GrumpyCrouton我同意这是一个很好的实践,但因为这是一个家庭作业,我的老师说除了最佳实践之外,还要将所有内容保存在一个文件中。。。快速修复方法是在
$\u SESSION['nomi'][=$\u POST['nome']之后取消设置POST变量---比如:
unset($\u POST['nome'])
-@louyspatricebesette我试过了,但由于某种原因它不起作用,这是不寻常的。但是无论如何,谢谢你,我知道它应该能工作,但由于某些原因它不能。@JasperHoward只是在你的PHP末尾重定向回同一个页面。这就解决了它,我知道重定向到同一个页面不是一个好的做法,但由于这是一个家庭作业,我的老师说我应该只在一个文件中做。谢谢你的帮助!
<?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>