【问题标题】:Saving post values in a session array将帖子值保存在会话数组中
【发布时间】:2011-06-21 23:12:01
【问题描述】:

我想将通过 POST 发送的值保存在会话数组中:

$reply = array('thread_id', 'reply_content');

$_POST['thread_id'] = 2; # test it

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



foreach ($reply as $key)
{
    if (in_array($key, $_POST))
    {
        $_SESSION['reply'][$key] = $_POST[$key];
    }
}

var_dump($_SESSION['reply']);

例如,我想检查键 'thread_id' 和 'thread_content' 是否在 post 中发送,如果是,那么我想使用相同的键将它们保存在名为 reply 的会话数组中。

例如,如果“thread_id”是通过 POST 发送的:

$_POST['thread_id'] = 'blah';

然后这应该保存在一个名为“回复”的会话中,使用相同的密钥:

$_SESSION['reply']['thread_id'] = 'blah';

如何做到这一点?

【问题讨论】:

  • 你写的代码不行吗?您在问如何做到这一点,但您的问题包括执行此操作的代码。
  • 就用另存为$_SESSION['reply']['thread_id'] = $_POST['thread_id];.
  • 代码似乎正确。会话初始化是否正确?
  • session_start 在那里...我忘了在这里添加它

标签: php session post


【解决方案1】:

使用这个

  $reply = array('thread_id', 'reply_content');

    $_POST['thread_id'] = 2; # test it

    $_SESSION['reply'] = array();
    foreach ($reply as $key)
    {
        if (isset($_POST[$key]))
        {
            $_SESSION['reply'][$key] = $_POST[$key];
        }
    }

【讨论】:

  • in_array 将检查不是键的值。
【解决方案2】:

一般来说,您的方法看起来有效,但我猜您可能不会调用session_start(),这是持久化会话数据所必需的。

session_start();

if(!$_SESSION['POST']) $_SESSION['POST'] = array();

foreach ($_POST as $key => $value) {
    $_SESSION['POST'][$key] = $value;
}

var_dump($_SESSION['POST']);

【讨论】:

    【解决方案3】:

    in_array($needle, $haystack) 检查$needle 是否是$haystack 中的 而不是键。请改用array_key_existsisset

    foreach ($reply as $key)
    {
        if (array_key_exists($key, $_POST))
        {
            $_SESSION['reply'][$key] = $_POST[$key];
        }
    }
    

    或者:

    $_SESSION['reply'] = array_merge($_SESSION['reply'], array_intersect_key($_POST, array_flip($reply)));
    

    【讨论】:

      猜你喜欢
      • 2012-11-25
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 2012-07-09
      • 1970-01-01
      • 2018-04-13
      相关资源
      最近更新 更多