在会话数组中保存post值

时间:2011-02-05 17:56:30

标签: php session post

我想在会话数组中保存通过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';

如何做到这一点?

3 个答案:

答案 0 :(得分:2)

一般情况下,您的方法看起来有效,但我猜您可能不会调用session_start(),这是保留会话数据所必需的。

session_start();

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

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

var_dump($_SESSION['POST']);

答案 1 :(得分:1)

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)));

答案 2 :(得分:0)

使用此

  $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];
        }
    }