Сохранение значений записей в массиве сеансов - PullRequest
1 голос
/ 05 февраля 2011

Я хочу сохранить значения, отправленные через 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', если они есть, то я хочу сохранить их в массиве сеансов с именем reply, используя те же ключи.

Так, например, если 'thread_id' отправляется через POST:

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

Затем это должно быть сохранено в сеансе, называемом «ответ», с использованием того же ключа:

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

Как это можно сделать?

Ответы [ 3 ]

2 голосов
/ 05 февраля 2011

В целом ваш подход выглядит верным, но я собираюсь предположить, что вы, возможно, не вызываете session_start(), что необходимо для сохранения данных сеанса.

session_start();

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

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

var_dump($_SESSION['POST']);
1 голос
/ 05 февраля 2011

in_array($needle, $haystack) проверяет, является ли $needle значением в $haystack, а не ключом.Используйте array_key_exists или isset вместо:

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)));
0 голосов
/ 05 февраля 2011

Используйте это

  $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];
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...