Я ищу способ обнаружения, когда страница перезагружается после нажатия кнопки «Назад», поэтому я могу выборочно игнорировать ошибки. Позвольте мне объяснить, почему:Обнаружение перезагрузки страницы после нажатия кнопки в PHP
Представьте страницу, которая отображает некоторые данные, идентифицированный идентификатором:
/show/some/data?id=5
Первоначально идентификатор существует и отображается страница. Если идентификатор не существует, отображается сообщение об ошибке и регистрируется ошибка, поскольку это не должно происходить и указывать на неработающую ссылку в приложении.
Теперь представьте, что пользователь просматривает данные, решает удалить их и после удаления использует кнопку «Назад», чтобы снова перейти на ту же страницу (BTW это не гипотетический, я видел это в своем приложении). Теперь идентификатор уже недействителен, вызывая ошибку. Если бы я мог различать начальную загрузку страницы и загрузку второй страницы после использования кнопки «Назад», я мог бы быть более мягким в обработке ошибок. Мое рассуждение о том, что сломанная (прямая) ссылка в приложении является фатальной ошибкой. Сломанная ссылка после щелчка назад (когда ее не было ни одного изначально), скорее всего, вызвано некоторыми действиями, предпринятыми пользователем тем временем. В этом случае я бы скорее перенаправил пользователя на обзорную страницу, чем показала ошибку приложения.
Я считаю, что один из способов решить эту проблему было бы приложить некоторые случайно сгенерированный идентификатор в URL:
/show/some/data?id=5&rnd=<?php print rand(); ?>
и регистрировать случайные идентификаторы, которые были использованы в ходе сессии. Если идентификатор повторяется, я могу предположить, что страница была перезагружена и выборочно игнорирует некоторые ошибки.
Однако это потребует изменения многих ссылок в приложении. Я мог бы также использовать JavaScript/JQuery, чтобы изменить все ссылки на страницы того же эффекта:
$("a").attr('href', function (i, h) {
return h + (h.indexOf('?') != -1 ? "&" : "?") + "rnd=" + Math.random();
});
Это немного менее агрессивны, но все еще довольно жесткой для решения такой, казалось бы, тривиальные проблемы. Интересно, существует ли или может быть автономный способ сделать это. Есть ли какой-либо способ для бэкэнд-приложения различать, загружается ли страница путем переадресации по ссылке или перезагрузки после нажатия? Или есть более элегантное решение с javascript?