Сеанс возвращается к исходному значению на моем производственном сервере, но не на моем локальном сервере

Я создаю быстрый веб-сайт для проведения опроса, который я делаю для класса. У меня есть 12 разных аудиоклипов, которые я бы хотел воспроизвести. Пользователю предоставляется выбор между двумя разными клипами, и каждый клип представлен только один раз. Я использую массив, хранящийся в переменной сеанса, чтобы отслеживать, какие клипы уже были воспроизведены. На localhost это работает безупречно. Но на производственном сервере сеанс, кажется, возвращается к своему исходному значению.

<?php

echo "Beginning session: " . implode(' ', $_SESSION['clip_ids']) . "<br>";

if (empty($_SESSION['clip_ids'])) {
    $_SESSION['clip_ids'] = range(0,11);
    header('Location: survey2.php');
    exit;
}

$clips = array( /*names of 12 audio files here */ );

$i = -1;
$j = -1;

while(!in_array($i, $_SESSION['clip_ids'])) {
    $i = rand(0,11);
}

while(!in_array($j, $_SESSION['clip_ids']) || $j == $i) {
    $j = rand(0,11);
}

unset($_SESSION['clip_ids'][$i]);
unset($_SESSION['clip_ids'][$j]);

echo "Ending session: " . implode(' ', $_SESSION['clip_ids']) . "<br>";

?>

На моем сервере localhost в начале сеанса перечислены номера 0-11, а в списке конечных сеансов 0-11 с удаленными двумя номерами. После обновления страницы в начальном сеансе указывается предыдущий конечный сеанс, в конце сеанса отображается предыдущий конечный сеанс с удаленными еще двумя номерами и т. д.

На моем производственном сервере в начале сеанса перечислены номера 0-11, а в списке конечных сеансов 0-11 с двумя удаленными числами, как и ожидалось. Казалось бы, $ _SESSION ['clip_ids'] успешно установлен в диапазон минус два числа. Но после обновления страницы в начальном сеансе снова перечислены числа от 0 до 11, а в конце сеанса - от 0 до 11 с удаленными двумя числами, как если бы $ _SESSION ['clip_ids'] никогда не изменялся.

Обновлено: Итак, когда я закомментировал начальное назначение сеанса на моей странице index.php, начали происходить некоторые действительно странные вещи (например, массив в сеансе будет пустым), поэтому я переименовал свой index.php во что-то другое .. ... и моя программа начала вести себя так, как я изначально ожидал. Понятия не имею, в чем причина этого. Любая помощь?

Просто проверяю, так как этого нет в вашем коде, но вызываете ли вы session_start() в начале каждой страницы?

fubar 13.04.2018 02:59

Да, session_start() вызывается в самом начале каждой страницы.

user1570181 13.04.2018 03:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
33
0

Другие вопросы по теме