Вернуться на предыдущую страницу с заголовком («Местоположение:»); в PHP
124
Название этого вопроса как бы объясняет мой вопрос. Как перенаправить посетителя страницы PHP обратно на предыдущую страницу с помощьюheader( "Location: URL of previous page" );
Обратите внимание, что это может не работать с защищенными страницами (HTTPS), и в целом это довольно плохая идея, поскольку заголовок может быть взломан, отправив пользователя в другое место назначения. Заголовок может даже не быть отправлен браузером.
В идеале вам нужно:
Добавьте адрес возврата к запросу в качестве переменной запроса (например,? Back = / list)
Определите страницу возврата в своем коде (т. Е. Все успешные отправленные формы перенаправляют на страницу списка)
Предоставьте пользователю возможность выбрать, куда он хочет перейти дальше (например, сохранить и продолжить редактирование или просто сохранить).
@Col, так ты можешь доказать практическую проблему с этим?
Pekka
1
Использование реферера после предварительного тестирования того, что он установлен и действителен, в определенном межстраничном контексте может быть вполне приемлемой практикой - подавляющее большинство браузеров отправляет правильный HTTP_REFERER.
Pekka
1
@Col Я использовал это в производстве, когда мне нужно было что-то сделать для демонстрации. Как видно из моего ответа, вместо перенаправления на основе HTTP_REFERER я предлагаю три других решения.
Димитрий
2
@Madmartigan звучит как очень странное поведение, единственный намек, который я вижу в сети, вызывающий некоторые проблемы с перенаправлением. В любом случае, я согласен с тем, что использование реферера не подходит, если вам нужна 100% безопасность
Это звучало очень умно, но в FF10 я понял, что "Corrupted Content Error The page you are trying to view cannot be shown because an error in the data transmission was detected."это в основном непригодно.
Уэсли Марч,
Уэсли Марч, У меня он отлично работает почти во всех основных браузерах, включая тот, который вы упомянули. Это работает для вас только в том случае, если вы зашли на страницу с историей.
Hammad
5
Это может привести к тому, что предыдущая страница будет обслуживаться из кеша браузера.
aksu
14
Вы должны как-то сохранить это место.
Скажем, это форма POST, просто поместите текущее местоположение в скрытое поле, а затем используйте его в header()Location.
Небольшое дополнение: я считаю, что это обычная и известная вещь, которую добавляют exit;после функции заголовка на случай, если мы не хотим, чтобы остальная часть кода загружалась или выполнялась ...
Хранить предыдущий URL-адрес в переменной сеанса - это плохо, потому что пользователь может щелкнуть правой кнопкой мыши несколько страниц, а затем вернуться и сохранить.
если вы не сохраните предыдущий URL-адрес в переменной сеанса в скрытое поле в форме и после сохранения заголовка («Местоположение: сохранить URL-адрес вызывающей страницы»);
Ответы:
пытаться:
Обратите внимание, что это может не работать с защищенными страницами (HTTPS), и в целом это довольно плохая идея, поскольку заголовок может быть взломан, отправив пользователя в другое место назначения. Заголовок может даже не быть отправлен браузером.
В идеале вам нужно:
источник
Это так просто, просто используйте это
Он отлично работает для меня
источник
"Corrupted Content Error The page you are trying to view cannot be shown because an error in the data transmission was detected."
это в основном непригодно.Вы должны как-то сохранить это место.
Скажем, это форма POST, просто поместите текущее местоположение в скрытое поле, а затем используйте его в
header()
Location.источник
Небольшое дополнение: я считаю, что это обычная и известная вещь, которую добавляют
exit;
после функции заголовка на случай, если мы не хотим, чтобы остальная часть кода загружалась или выполнялась ...источник
Просто попробуйте это в Javascript:
Или вы можете попробовать это на PHP:
источник
Хранить предыдущий URL-адрес в переменной сеанса - это плохо, потому что пользователь может щелкнуть правой кнопкой мыши несколько страниц, а затем вернуться и сохранить.
если вы не сохраните предыдущий URL-адрес в переменной сеанса в скрытое поле в форме и после сохранения заголовка («Местоположение: сохранить URL-адрес вызывающей страницы»);
источник