PHP - 使用$ _POST更新会话数组

时间:2014-08-03 22:50:55

标签: php session post

我是使用PHP会话的新手,我在使用$ _POST方法更新会话数组时遇到了问题。

基本上,每个按钮都有一个值,我想在每次点击时添加到数组$_SESSION['items']。但是,目前正在发生的事情是数组被重置并被最后选择的值替换。

这是我到目前为止所得到的:

<?
session_name("test");
session_start();
?>


<form method="post">
    <button type="submit" name="item[]" value="Item 1">Item 1</button>
    <button type="submit" name="item[]" value="Item 2">Item 2</button>
</form>


<?
$_SESSION['items'] = array();
array_push($_SESSION['items'], $_POST['item']);
print_r($_SESSION['items']);
?>


任何帮助将不胜感激。
谢谢!

4 个答案:

答案 0 :(得分:1)

$_SESSION['items'] = array();此行每次加载页面时都会重置$ _SESSION ['items']。如果要初始化数组,请尝试

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

代替。

答案 1 :(得分:0)

在这种情况下,您可以尝试类似:

$_SESSION['items'] = $_POST['items'];

如果您想在会话中添加数组而不是值,可以尝试以下方法:

$items= new array(
    "1" => "item1",
    "2" => "item2");
$_SESSION['items'] = $items;

答案 2 :(得分:0)

看起来你正在用

重置Session数组
$_SESSION['items'] = array();

离开这一点似乎可以解决问题。

我还建议您将按钮的名称更改为“item”,否则每次单击时都会向会话数组添加一个数组,而不仅仅是单个值。当然,除非你的意思正是如此。

新脚本如下所示:

<?
session_name("test");
session_start();
?>


<form method="post">
    <button type="submit" name="item" value="Item 1">Item 1</button>
    <button type="submit" name="item" value="Item 2">Item 2</button>
</form>


<?
array_push($_SESSION['items'], $_POST['item']);
print_r($_SESSION['items']);
?>

答案 3 :(得分:0)

$ _ SESSION已经是一个数组,无需声明它。在脚本的顶部,您已经创建了$_SESSION['test']

尝试

<?
array_push($_SESSION['test'], $_POST['item']);
print_r($_SESSION['test']['item']);
?>

您可能还需要撤消这些操作才能正常工作。

session_start();
session_name("test");
相关问题