Ключ сессии вообще не существует если указать unset

156
26 октября 2018, 12:00

Вот вью

if (isset($_SESSION['msg'])) {
  if ($_SESSION['msg']['type'] == 'success') {
    ?><script type="text/javascript">toastr.success("<?=$_SESSION['msg']['message']?>");</script><?
  }else {
    ?><script type="text/javascript">toastr.error("<?=$_SESSION['msg']['message']?>");</script><?
  } 
  unset($_SESSION['msg']);
}

Вот код контроллера

if (isset($_POST['invite'])) {
      include_once ROOT.'/system/Models/Invites.php';
      $res = Invites::AddInvite($_POST['invite']);
      if ($res == true) {
        $_SESSION['msg'] = array('type' => 'success', 'message' => 'Инвайт добавлен');
      }else{
        $_SESSION['msg'] = array('type' => 'error', 'message' => 'Инвайт не добавлен');
      } 
      header('Location: /JokersMadeAGreatDeal/invites');
    }else{die('ATATA');}

Посылается пост запрос, где в сессию под ключем msg добавляется массив. После перенаправляется на другую страницу, где другой контроллер подключает вьюшку. Но этот ключ сессии уже стерт.

Не срабатывает запуск js, но если убрать unset($_SESSION['msg']), все прекрасно работает. Подскажите в чем может быть дело?

Answer 1

Я понял, я голова, дело в том, что у меня принято в конце контроллера возвращать true, и в таком случае класс роута бы не искал дальнейшие совпадения, а я забыл это сделать и роут нашел дальнейшее совпадение и в POST запросе его отработал. Вот и получалось что ключ удалялся не отобразившись.

Дети хлопают в ладоши, всем спасибо ответ хороший!

READ ALSO
C++ error: ambiguous symbol. Compiler replacing &#39;*&#39; with &#39;^&#39; to continue parsing

C++ error: ambiguous symbol. Compiler replacing '*' with '^' to continue parsing

На решения данных ошибок ушло больше целого рабочего дняКак узнал из разных ресурсов, не можно миксовать managed и not-managed классы

176
Объясните, что значит string(1, char)

Объясните, что значит string(1, char)

Прохожу курс по с++ и там в рекомендуемом решении задачи написано:

146