2012-01-20 2 views
-1

У меня был взгляд вокруг, но ближайший я нашел для asp.net. Я хотел бы запретить пользователю нажимать кнопку «Назад» в браузере или, если возможно, связать его с другой страницей, если он нажмет кнопку «Назад».PHP - Предотвратить использование пользователем обратно

Страница 1: Регистрация Страница 2: Регистрация завершена Когда пользователь нажимает, он должен перенаправить его на домашнюю страницу (home.html).

Вся помощь приветствуется!

+5

Веб-сайты, которые пытаются объехать с помощью кнопки «Назад», - это боль в заднице. Пожалуйста, не делайте этого! –

+0

Какая техника использовала решение 'ASP.NET'? Не можете ли вы перенести его на PHP, если да, то почему? – zrvan

+0

Я видел это сообщение: http://stackoverflow.com/questions/1076988/how-can-i-prevent-the-user-from-navigating-back-to-a-previous-page – CustomX

ответ

6

Вы не можете предотвратить его использование. Период. Даже когда вы открываете всплывающее окно и скрываете кнопки навигации, его можно обойти.

Что вы можете сделать, когда пользователь зарегистрирован, установить файл cookie или сохранить что-либо в $_SESSION, а если пользователь зарегистрирован ($_SESSION['justRegistred'] = true), вы можете проверить это, если это значение существует, когда на странице 1. Если значение существует и является истинным, do a header_location('.../home.php')

+0

Я думаю, что это может быть лучшим решением. Так что технически пользователь переходит со страницы 1 на страницу 2 и получает сеанс на стр. 2. Если он вернется, он вернется на страницу 1, но из-за того, что он получил его, он будет связан с другой страницей? Будет ли пользователь видеть это? – CustomX

1

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

Если пользователь завершил свою регистрацию и откроет страницу . Страница снова она перенаправляется.

С точки зрения пользователей это выглядит так, если спина не работает.

+0

Я думаю, что сеанс будет моим лучшим вариантом. – CustomX

+0

Это зависит от того, чего вы хотите достичь. Обработка сеанса может иметь неожиданные побочные эффекты для ваших пользователей. Чтобы предотвратить побочные эффекты, вместо этого увеличивайте удобство использования вашего сайта. Например. Получите перенаправление после отправки сообщения. Также вы можете сделать страницу «Регистрация завершена» с тем же URL-адресом, что и «Регистрационная страница», которая обычно работает намного лучше и более прозрачна для пользователя. – hakre

+0

Они перенаправляются со страницы 1 на страницу 2, и там им нужно щелкнуть любой пункт меню. Я просто хочу, чтобы они не возвращались обратно в регистрационную форму, используя спину, поэтому сеансы звучат хорошо. – CustomX

1

Вы также можете проверить на

 

$_SERVER['HTTP_REFERER']; 
 

Если Отсносящаяся страница завершения регистрации затем показать страницу.

+0

не все браузеры отправят HTTP_REFERER, если моя память мне очень понравится :) – Prisoner

1

Когда пользователь впервые приходит на страницу просмотра, вы можете создать переменную, хранящуюся в текущем сеансе, если она еще не определена. Если он уже создан, вы просто проверить, если пользователь завершил процесс регистрации, как это:

if(isset($_SESSION[ "userRegistered" ]) && $_SESSION[ "userRegistered" ]) 
    header("Location: index.php"); // go to the home page if the registration is already done 
else 
    $_SESSION["userRegistered"] = false; 

Затем, после завершения процесса регистрации установлено, что та же переменная истина;

Теперь, если пользователь нажимает назад, на странице регистрации будет проверяться, завершен ли процесс, и если да, то он перенаправит пользователя.

Надеюсь, это поможет. Хорошего дня.

+0

спасибо, это похоже на Снейк, но с кодом. Итак, это идет на странице 1 и на странице 2, я бы назначил сеанс, правильно? – CustomX

Смежные вопросы