如何在每次发送表单时将$ _POST变量附加到$ _SESSION数组?

时间:2013-03-17 11:31:14

标签: php session-variables http-post-vars

大约2个小时我正在努力解决这个问题。 我想在$ _SESSION数组中插入$ _POST变量,并将表单发送的每个新数据附加到会话变量。 现在,当我将会话变量定义为数组时,我是这样说的吗? $ _SESSION [ '名'];
或者像这样 $ _SESSION ['name'] = array();

我有两个POST变量,我想在会话数组中插入每个变量。

以下是表格:

<form action="action.php" method="POST" >
<label>Moovie name: <input type="text" name="name" /></label><br />
<label>Price: <input type="text" name="price" /></label><br />
<input type="submit" value="Send" />
</form>

这是action.php

<?php

session_start();

$_SESSION['name'] = array();
$_SESSION['price'] = array();

$name = $_POST['name'];
$price = $_POST['price'];

array_push($_SESSION['name'], $name);
array_push($_SESSION['price'], $price);

print_r($_SESSION['name']);
echo "<br>";
print_r($_SESSION['price']);

?>

注意: 如果我说

$_SESSION['name']; instead of $_SESSION['name'] = array();

我得到警告:array_push()期望参数1为数组,在action.php中给出null 同样,$ _SESSION ['name']从一开始就是一个数组吗?

1 个答案:

答案 0 :(得分:1)

每次运行此脚本时,您都在清空会话数组。

要避免这种情况,请检查会话中是否已存在数组:

<?php

session_start();


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


$name = $_POST['name'];
$price = $_POST['price'];

array_push($_SESSION['name'], $name);
array_push($_SESSION['price'], $price);

print_r($_SESSION['name']);
echo "<br>";
print_r($_SESSION['price']);

?>