PHP: перезапись переменных сеанса - PullRequest
1 голос
/ 04 апреля 2010

Вопрос, связанный с обработкой памяти PHP от человека, еще не очень опытного в PHP:

Если я установил переменную сеанса PHP с конкретным именем, а затем установил переменную сеанса с точно таким же именем в другом месте (во время того же сеанса), перезаписывается ли исходная переменная или накапливается ли мусор в сеансе?

Другими словами, должен ли я уничтожать предыдущую переменную сеанса перед созданием новой с тем же именем?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 04 апреля 2010

$ _ SESSION работает так же, как и любой другой массив, поэтому, если вы используете один и тот же ключ каждый раз, значение перезаписывается.

1 голос
/ 04 апреля 2010

Tom

Это зависит от того, как вы используете переменную сеанса, но обычно это означает «стирание» этой переменной (замена точного старого значения новым, если быть точным).

Переменная сеанса может хранить строку, число или даже объект.


<?php
    # file1.php
    session_start();
    $_SESSION['favcolor'] = 'green';
    $_SESSION['favfood'] = array('sushi', 'sashimi');
?>

После этого переменная $_SESSION['favcolor'] и переменная $_SESSION['favfood'] сохраняются на стороне сервера (как файл по умолчанию). Если этот же пользователь посещает другую страницу, страница может получать данные или записывать в то же хранилище, создавая у пользователя иллюзию, что сервер «запоминает» его / ее.


<?php
    # file2.php
    session_start();
    echo $_SESSION['favcolor'], '<br />';
    foreach ($_SESSION['favfood'] as $value) {
        echo $value, '<br />';
    }
?>

Конечно, вы можете изменить переменную $_SESSION так, как вы хотите: вы можете unset() любую переменную, добавить массив в примере с помощью $_SESSION['favfood'][] = 'hamburger'; и так далее. Все это будет сохранено в файле сеанса (файл по умолчанию, но может быть базой данных). Но учтите, что переменная $_SESSION действует магически только после вызова session_start(). В общем, это означает, что если вы используете сеансы, вам придется звонить session_start() в начале каждой страницы вашего сайта . В противном случае $_SESSION - это обычная переменная, и никакой магии не происходит: -).

Для получения дополнительной информации см. PHP-ссылку здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...