Jak zmienić adres i status przy odświeżeniu strony?

0

Hej, po zatwierdzeniu formualrza mam linię kodu która przenosi użytkownika do index.php w ten sposób:

header('location:index.php?status=success');


teraz w index.php mam ten kod który pokazuję użytkownikowi pop-up informujący, że formularz został zatwierdzony pomyślnie jeżeli status to "success":

<?php
if($_GET['status'] == 'success'):
  echo '<script>
  document.querySelector(".popup-content").classList.add("show");
  document.querySelector(".popup-wrapper").classList.add("page-mask");
  </script>';
endif;
?>

Problem w tym, że ta wiadomość będzie wyświetlać się teraz za każdym razem jak użytkownik odświeży stronę, jako że w pasku adresu pozostaje index.php?status=success. Jak mogę zrobić żeby po odświeżeniu strony załadował się index.php bez tego statusu?

3

Możesz zapisać tę informację w sesji, a następnie wyczyścić:

<?php

session_start();
$_SESSION['show_status'] = 'success';

header('location:index.php');
<?php

session_start();

if (isset($_SESSION['show_status']) && $_SESSION['show_status'] === 'success') {
    unset($_SESSION['show_status']);

    // pokaż komunikat
}
0

Dzięki :) Musiałem tylko wynieść session_start(); na samą górę index.php bo inaczej nie działało.

1

Prostszym, choć innym sposobem jest dopisanie w JS jednej linijki:

history.replaceState({}, "", location.pathname);

podmieni to URL w przeglądarce (bez możliwości cofnięcia ponownie do tego, co nie chcemy) na taki bez parametrów (wszystko po ? wraz z ? zostanie usunięte). Jak ktoś ręcznie otworzy stronę z status=success to ponownie zobaczy komunikat, ale przynajmniej odświeżenie f5 nie pokaże komunikatu i jeżeli ktoś w tym momencie skopiuje linka do strony to też już bez parametrów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1