Я создаю быстрый веб-сайт для проведения опроса, который я делаю для класса. У меня есть 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() вызывается в самом начале каждой страницы.






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