Было бы достаточно просто очистить переменную сеанса после отображения сообщения?
Это кажется самым простым решением. Вы также можете:
A) Проверьте, какая информация содержится в переменной $ _SERVER, чтобы попытаться определить, как пользователь попал на страницу, отображая сообщение только в том случае, если это произошло из маршрута.
B) У перенаправления есть переменная строки запроса (например, 'messages = 1'), которую вы проверяете с помощью $ _GET перед отображением сообщения сеанса.
РЕДАКТИРОВАТЬ: Я думал, что порядок операций:
1) Форма отправки
2) если нет ошибок, установить сообщение в сеансе
3) перенаправление
4) отобразить сообщение после перенаправления
Я говорю добавить шаг 5: удалите сообщение ПОСЛЕ того, как оно отобразится. Например, выведите сообщение как вы, но затем добавьте код после эха, чтобы удалить или очистить переменную сеанса.
РЕДАКТИРОВАТЬ 2: Ааа, теперь я понимаю ...
Мне любопытно, должны ли вы ссылаться на переменную сеанса прямо из файла шаблона. Может быть, лучше передать его как параметр шаблона, который устанавливается PHP, который вызывает шаблон? Это дает вам возможность отделить управление сеансом от отображения, что в любом случае, вероятно, в ваших интересах.