使用表单POST多个会话变量,在后续页面上输出

时间:2017-02-12 04:05:53

标签: php forms session post

我经历了20多个不同的帖子,我似乎无法将这个问题和答案拼凑在一起,以解决我想要完成的各个方面。

我有一个用户可以填写的表格。我希望在提交表单后,所做的选择将在整个网站的其余部分用作变量。

我的代码:

<form action="page1" method="POST">
  <input type="text" name="var_1">
  <input type="text" name="var_2">
  <input type="submit" value="Submit" class="submit" name="submit">
</form>


<?php

session_start();

 if (isset($_POST['submit'])) {

   $_SESSION['var_1'] = $_POST['var_1'];
   $_SESSION['var_2'] = $_POST['var_2'];

 }
?>

下一页:

<?php

session_start();

$var_1 = $_SESSION['var_1'];
$var_2 = $_SESSION['var_2'];

?>

<?php echo $var_1';?>
<?php echo $var_2';?>

这导致空白回声和页面顶部每个变量的重复错误:

Notice: Undefined index: var_1 in page1.php on line #

显然我的会议没有成为第二页,但我不知道为什么或我做错了什么。这是关于添加多个会话,发布会话,获取会话的帖子拼凑而成的。

1 个答案:

答案 0 :(得分:2)

从您的action中删除<form>,并在PHP代码中将重定向提供给page1,因为下面的PHP代码无法运行并被重定向到下一页。结果其中的会话将不会被设置

    <form action="" method="POST">
      <input type="text" name="var_1">
      <input type="text" name="var_2">
      <input type="submit" value="Submit" class="submit" name="submit">
    </form>
    <?php

 session_start();

 if (isset($_POST['submit'])) {

   $_SESSION['var_1'] = $_POST['var_1'];
   $_SESSION['var_2'] = $_POST['var_2'];
   //redirect
   header("Location: page1.php");
 }
?>

或者在下一页中设置session而不使用下面的代码

<form action="page1" method="POST">
  <input type="text" name="var_1">
  <input type="text" name="var_2">
  <input type="submit" value="Submit" class="submit" name="submit">
</form>

page1.php中

<?php

session_start();
$_SESSION['var_1'] = $_POST['var_1'];
$_SESSION['var_2'] = $_POST['var_2'];
$var_1 = $_SESSION['var_1'];
$var_2 = $_SESSION['var_2'];

?>

<?php echo $var_1;?>
<?php echo $var_2;?>