如何在php会话中存储来自php表单的用户输入

时间:2019-06-27 10:55:44

标签: php session post

我想在php会话中存储来自php表单的用户列表    我在会话开始时定义了一个空数组,并试图   在每次提交时收集用户名。

  session_start();
  $persons=array();
  if (isset($_POST)) {
    $_SESSION['val']=$_POST['val'];
    $persons=$_SESSION['val'];
  }
  foreach($persons as $d){
    echo $d;
    echo '</br>';   
  }

  <form action="exam.php" method="post">
  Enter a new Person:  <input type="text" name = "val">
                     <input type="submit" name = "send">
  </form>

我希望收到的提交人名单从      数组      但是每次我提交时,最后一个提交都会替换第一个。

1 个答案:

答案 0 :(得分:1)

您每次都覆盖数组:

 $persons = $_SESSION['val'];

为了将数据推送到php中的数组,您必须采用以下方式:

$persons[] = $_SESSION['val'];

如果要存储会话中的所有人员,而不必在每次第一次需要检查会话是否存在时都覆盖它们,如果不存在,请创建会话。

if(!isset($_SESSION['persons'])){
 $_SESSION['persons'] = array()
}

然后更改在会话中存储信息的方式,例如:

$_SESSION['persons'][] = $_POST['val']; 

那么您可以做:

foreach($_SESSION['persons'] as $d){
  echo $d;
  echo '</br>';
}

所以代码如下:

session_start();
$persons=array();

if(!isset($_SESSION['persons'])){
 $_SESSION['persons'] = array();
}

if (isset($_POST)) {
  $_SESSION['persons'][] = $_POST['val']; 
}

foreach($_SESSION['persons'] as $d){
  echo $d;
  echo '</br>';   
}

<form action="exam.php" method="post">
  Enter a new Person:  <input type="text" name = "val">
                     <input type="submit" name = "send">
</form>

我没有编译代码,没有检查语法错误,但是过程正确。