Сессия, установленная после перенаправления, не сохраняется при отправке формы

Я использую сеансы для отправки переменных через формы, чтобы безопасно удалить записи на сервере. Все работает просто отлично

  1. Я создаю список записей вместе с кнопками удаления в виде форм.
  2. При создании кнопок удаления я установил сеанс, включающий токен и идентификатор элемента, который нужно удалить.
  3. Когда я нажимаю кнопку удаления (которая отправляет форму), вызывается действие в php-файле, который обрабатывает действие. Я читаю токен, сравниваю его с отправленным в форме, извлекаю из сеанса идентификатор удаляемого элемента, удаляю элемент.
  4. Перенаправить пользователя на предыдущую страницу.

Однако после перенаправления это не работает, если я не обновлю страницу перед удалением. Несмотря на то, что сеанс снова создается после перенаправления (я уже проверил, что это работает нормально), когда я снова отправляю форму удаления, сеанс не сохраняется в файле, который обрабатывает форму.

Кто-нибудь имеет представление о том, что может происходить?

Как я устанавливаю сессию:

$token = SessionManager::setTokenForForm('delete-' . $row->id, $values);

echo '<form method="post" action="' . FrontendConstants::$BASE_URL . FrontendConstants::$DELETE_RECORD_URL . '">';
echo '  <input type="hidden" name="token" value="' . $token . '"/>';
echo '    <input type="hidden" name="redirect_url" value="' . $fullRedirectUrl . '"/>';
echo '    <input type="hidden" name="id" value="' . $row->id . '"/>';
echo '    <input type="submit" class="btn btn-default" value="Delete"/>';
echo ' </form>';

Функция setTokenForForm:

public static function setTokenForForm($form, $values = null) {
$token = uniqid();
if (!isset($_SESSION)) {
session_start();
}

$session = array();

$session['token'] = $token;

if ($values != null) {
$session['values'] = $values;
} else {
$session['values'] = array();
}

$_SESSION[$form] = $session;

return $token;
}

На delete.php, который является файлом, вызываемым формой, после просмотра сеанса и удаления элемента я перенаправляю на предыдущую страницу:

header('Location: ' . $redirect_url);

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]