【问题标题】:PHP - Using $_POST to update session arrayPHP - 使用 $_POST 更新会话数组
【发布时间】:2014-08-03 22:50:54
【问题描述】:

我是使用 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']);
?>


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

【问题讨论】:

  • 绝对删除这一行 :) $_SESSION['items'] = array(); 因为它每次都会重置您的会话数组。或者最好像这样if(!isset($_SESSION['items'])) $_SESSION['items'] = array(); 只初始化一次。

标签: php session post


【解决方案1】:

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

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

改为。

【讨论】:

    【解决方案2】:

    看起来您正在重置 Session 数组

    $_SESSION['items'] = array();
    

    忽略那一点似乎可以解决问题。

    我还建议您将按钮的名称更改为“项目”,否则您会在每次单击时向会话数组添加一个数组,而不仅仅是一个值。当然,除非这正是你想要的。

    新脚本如下所示:

    <?
    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】:

    在这种情况下,您可以尝试以下方法:

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

    如果你想在会话中添加一个数组而不是一个值,你可以尝试这样的事情:

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

    【讨论】:

      【解决方案4】:

      $_SESSION 已经是一个数组,不需要声明它。在脚本顶部你已经创建了$_SESSION['test']

      试试

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

      您可能还需要反转这些才能使其工作。

      session_start();
      session_name("test");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多