qnixnet
@qnixnet

Как запретить показывать вторую страницу пока не нажата кнопка «далее» на первой?

Доброго времени суток!
Есть форма регистрации разбитая на две страницы. Нужно запретить показ второй страницы пока пользователь не заполнил форму на первой и не нажал кнопку "далее".

Вот код из первой страницы:
<form action="register" method="post" name="register_form">
    <table><tbody>
        <tr><td> ... </td></tr>

        <tr><td>
            <input class="..." type="submit" name="btn_submit_accept" value="Далее">
        </td></tr>
    </tbody></table>
</form>


Страницу register я успешно скрыл простой проверкой нажатия кнопки.
Внутри register.php:
if(isset($_POST['btn_submit_accept']) && !empty($_POST['btn_submit_accept'])){...}


Внутри action="register" находится различные проверки введенных данных и пересылка на следующею страницу:
header("Location: ". ... ... ... ."/accept_form");

На странице 2 есть своя форма, которая тоже содержит скрытый файл:
<form action="accept" method="post" name="accept_form">


Цель закрыть доступ к странице пока не заполнена форма на первой странице и запретить доступ напрямую.
Как можно реализовать такое?
  • Вопрос задан
  • 130 просмотров
Решения вопроса 3
anatoly_kulikov
@anatoly_kulikov
Помог ответ? Отметь решением!
Вариантов на самом деле очень много:
  • переслать на вторую страницу с первой какой-либо флаг, наличие которого только и открывает страницу, иначе возвращает ошибку или какое другое действий
  • использовать куки
  • написать эту форму регистрации на js (чистом или фреймворка), тогда у вас две страницы будут в одной, и пролистать ничего не получится

Можете выбрать любой вариант, они все рабочие.
Ответ написан
@FanatPHP
Чебуратор тега PHP
сессии
Ответ написан
qnixnet
@qnixnet Автор вопроса
Выложу свое решение.
На странице 2 (где продолжения ввода данных в форму, еще ДО записи данных в БД):

if($_SESSION['username_p1'] && $_SESSION['password_p1']){

продолжение формы

}else{
    exit("<p>Вы зашли сюда напрямую. Сначала заполните<a href=". ... стр.1 ... .">форму</a>.</p>");
}


В исполняемом файле на второй странице (после записи в БД):
if(!$query_insert){ // проверка на успешность записи в БД
   print "error massage"; // например
}else{
    session_unset(); // удаление переменных из сессии
    header("Location: ". ... ... ... ."/index.php"); // выход из страницы
}


СПАСИБО всем за комментарии!!
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
bestowhope
@bestowhope
Печатает...
По мне так проще на js реально сделать.
Функцию прописать что (условно) пока конечный обязательный инпут на 1й стр. не true на валидность, 2ая скрыта.
И не надо ничего dro4it с какой-то там бд
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы