Почему мой сеанс сбрасывается, когда я добавляю значение на 2-й странице, а затем возвращаюсь к исходной? - PullRequest
0 голосов
/ 08 января 2019

Итак, у меня есть 2 страницы. На первом я запускаю массив сессий. Затем я перенаправляю на 2 страницу. Там я добавляю значение в массив сессии. Но когда я возвращаюсь к 1-й странице, массив сессии сбрасывается до 0 значений. Я поместил session_start () в начале обеих страниц.

стр. 1

<?php

session_start();
$shopping_cart = array();
$_SESSION['cart'] = $shopping_cart;



print_r($_SESSION['cart']);
#Array ( ) 
?>

стр. 2

<?php

session_start();
array_push($_SESSION['cart'], "test");
print_r($_SESSION['cart']);
#Array ([0] => test) 
?>

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Думайте об этом логически. Давайте удалим усложнение реальной СЕССИИ и подделаем его для демонстрационных целей

На странице 1 вы делаете

$shopping_cart = array();
$SES['cart'] = $shopping_cart;
print_r($SES);

OUTPUT

Array
(
    [cart] => Array
        (
        )

)

На странице 2 вы делаете

array_push($SES['cart'], "test");
print_r($SES);

OUTPUT

Array
(
    [cart] => Array
        (
            [0] => test
        )

)

Затем вы возвращаетесь на страницу 1 и УНИЧТОЖАЕТЕ то, что было в сеансе, повторно инициализируя его в пустой массив

$shopping_cart = array();
$SES['cart'] = $shopping_cart;
print_r($SES);

OUTPUT

Array
(
    [cart] => Array
        (
        )

)

Теперь, если вы впервые проверили, было ли хорошей идеей сначала инициализировать сессию, как это

$shopping_cart = array();
if ( !isset($SES['cart']) ) {
    $SES['cart'] = $shopping_cart;
}

print_r($SES);

Вы получите вывод как

Array
(
    [cart] => Array
        (
            [0] => test
        )

)

, который будет содержать данные, созданные в page2

0 голосов
/ 08 января 2019

Вы перезаписываете суперглобальный $_Session каждый раз, когда загружается первая страница. Использование:

<?php
    session_start();
    if (!isset($_SESSION['cart'])) {
        $shopping_cart = array();
        $_SESSION['cart'] = $shopping_cart;
    }

    print_r($_SESSION['cart']);
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...